Copyright (C) 2005 Jeff Rose This library is free software; you can redistribute it and/or modify it under the same terms as the ruby language itself, see the file COPYING for details.
require 'date'
### Add some to_ical methods to classes
# class Object # def to_ical # raise(NotImplementedError, “This object does not implement the to_ical method!”) # end # end
module Icalendar
module TzidSupport attr_accessor :icalendar_tzid end
end
require 'uri/generic'
class String
def to_ical self end
end
class Fixnum
def to_ical "#{self}" end
end
class Float
def to_ical "#{self}" end
end
# From the spec: “Values in a list of values MUST be separated by a COMMA # character (US-ASCII decimal 44).” class Array
def to_ical map{|elem| elem.to_ical}.join ',' end
end
module URI
class Generic def to_ical "#{self}" end end
end
attr_accessor :ical_params include Icalendar::TzidSupport def to_ical s = "" # 4 digit year s << self.year.to_s # Double digit month s << "0" unless self.month > 9 s << self.month.to_s # Double digit day s << "0" unless self.day > 9 s << self.day.to_s s << "T" # Double digit hour s << "0" unless self.hour > 9 s << self.hour.to_s # Double digit minute s << "0" unless self.min > 9 s << self.min.to_s # Double digit second s << "0" unless self.sec > 9 s << self.sec.to_s # UTC time gets a Z suffix if icalendar_tzid == "UTC" s << "Z" end s end
end
class Date
attr_accessor :ical_params def to_ical(utc = false) s = "" # 4 digit year s << self.year.to_s # Double digit month s << "0" unless self.month > 9 s << self.month.to_s # Double digit day s << "0" unless self.day > 9 s << self.day.to_s end
end
class Time
attr_accessor :ical_params def to_ical(utc = false) s = "" # Double digit hour s << "0" unless self.hour > 9 s << self.hour.to_s # Double digit minute s << "0" unless self.min > 9 s << self.min.to_s # Double digit second s << "0" unless self.sec > 9 s << self.sec.to_s # UTC time gets a Z suffix if utc s << "Z" end s end
end