class TaskJuggler::ICalendar::Component

Base class for all ICalendar components.

Attributes

description[RW]
organizer[RW]
relatedTo[RW]
uid[R]

Public Class Methods

new(ical, uid, summary, startDate) click to toggle source
# File lib/taskjuggler/ICalendar.rb, line 36
def initialize(ical, uid, summary, startDate)
  @ical = ical
  @type = self.class.to_s.split('::').last.upcase
  @uid = uid + "-#{@type}"
  @summary = summary
  @startDate = startDate

  # Optional attributes
  @description = nil
  @relatedTo = nil
  @organizer = nil
  @attendees = []
end

Public Instance Methods

addAttendee(name, email) click to toggle source
# File lib/taskjuggler/ICalendar.rb, line 54
def addAttendee(name, email)
  @attendees << Person.new(name, email)
end
setOrganizer(name, email) click to toggle source
# File lib/taskjuggler/ICalendar.rb, line 50
def setOrganizer(name, email)
  @organizer = Person.new(name, email)
end
to_s() { || ... } click to toggle source
# File lib/taskjuggler/ICalendar.rb, line 58
      def to_s
        str = <<"EOT"
BEGIN:V#{@type}
DTSTAMP:#{dateTime(TjTime.new.utc)}
CREATED:#{dateTime(@ical.creationDate)}
UID:#{@uid}
LAST-MODIFIED:#{dateTime(@ical.lastModified)}
SUMMARY:#{quoted(@summary)}
DTSTART:#{dateTime(@startDate)}
EOT
        str += "DESCRIPTION:#{quoted(@description)}\n" if @description
        str += "RELATED-TO:#{@relatedTo}\n" if @relatedTo

        if @organizer
          str += "ORGANIZER;CN=#{@organizer.name}:mailto:#{@organizer.email}\n"
        end
        @attendees.each do |attendee|
          str += "ATTENDEE;CN=#{attendee.name}:mailto:#{attendee.email}\n"
        end

        str += yield if block_given?

        str += "END:V#{@type}\n\n"
      end