Data-ICal

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

        print $calendar->as_string;

DESCRIPTION
    A Data::ICal object represents a "VCALENDAR" object as defined in the
    iCalendar protocol (RFC 2445, MIME type "text/calendar"), as implemented
    in many popular calendaring programs such as Apple's iCal.

    Each Data::ICal object is a collection of "entries", which are objects
    of a subclass of Data::ICal::Entry. The types of entries defined by
    iCalendar (which refers to them as "components") include events, to-do
    items, journal entries, free/busy time indicators, and time zone
    descriptors; in addition, events and to-do items can contain alarm
    entries. (Currently, Data::ICal only implements to-do items and events.)

    Data::ICal is a subclass of Data::ICal::Entry; see its manpage for more
    methods applicable to Data::ICal.

METHODS
  new [ data => $data, ] [ filename => $file ], [ vcal10 => $bool ]
    Creates a new Data::ICal object.

doc/rfc2445.txt  view on Meta::CPAN

   This memo is formatted as a registration for a MIME media type per
   [RFC 2048]. However, the format in this memo is equally applicable
   for use outside of a MIME message content type.

   The proposed media type value is 'text/calendar'. This string would
   label a media type containing calendaring and scheduling information
   encoded as text characters formatted in a manner outlined below.

   This MIME media type provides a standard content type for capturing
   calendar event, to-do and journal entry information. It also can be
   used to convey free/busy time information. The content type is
   suitable as a MIME message entity that can be transferred over MIME
   based email systems, using HTTP or some other Internet transport. In






Dawson & Stenerson          Standards Track                     [Page 1]


doc/rfc2445.txt  view on Meta::CPAN

   In order to avoid confusion with this referenced work, this memo is
   to be known as the iCalendar specification.

   This memo defines the format for specifying iCalendar object methods.
   An iCalendar object method is a set of usage constraints for the
   iCalendar object. For example, these methods might define scheduling
   messages that request an event be scheduled, reply to an event
   request, send a cancellation notice for an event, modify or replace
   the definition of an event, provide a counter proposal for an
   original event request, delegate an event request to another
   individual, request free or busy time, reply to a free or busy time
   request, or provide similar scheduling messages for a to-do or
   journal entry calendar component. The iCalendar Transport-indendent
   Interoperability Protocol (iTIP) defined in [ITIP] is one such
   scheduling protocol.

Table of Contents

   1 Introduction.....................................................5
   2 Basic Grammar and Conventions....................................6
    2.1 Formatting Conventions .......................................7

doc/rfc2445.txt  view on Meta::CPAN



   unwired transport such as infrared might also be used.

   The memo also provides for the definition of iCalendar object methods
   that will map this content type to a set of messages for supporting
   calendaring and scheduling operations such as requesting, replying
   to, modifying, and canceling meetings or appointments, to-dos and
   journal entries. The iCalendar object methods can be used to define
   other calendaring and scheduling operations such a requesting for and
   replying with free/busy time data. Such a scheduling protocol is
   defined in the iCalendar Transport-independent Interoperability
   Protocol (iTIP) defined in [ITIP].

   The memo also includes a formal grammar for the content type based on
   the Internet ABNF defined in [RFC 2234]. This ABNF is required for
   the implementation of parsers and to serve as the definitive
   reference when ambiguities or questions arise in interpreting the
   descriptive prose definition of the memo.

2 Basic Grammar and Conventions

doc/rfc2445.txt  view on Meta::CPAN





Dawson & Stenerson          Standards Track                    [Page 11]

RFC 2445                       iCalendar                   November 1998


   The file extension of "ifb" is to be used to designate a file
   containing free or busy time information consistent with this MIME
   content type.

   Macintosh file type codes: The file type code of "iCal" is to be used
   in Apple MacIntosh operating system environments to designate a file
   containing calendaring and scheduling information consistent with
   this MIME media type.

   The file type code of "iFBf" is to be used in Apple MacIntosh
   operating system environments to designate a file containing free or
   busy time information consistent with this MIME media type.

3.11 Contact for Further Information:

   Frank Dawson
   6544 Battleford Drive
   Raleigh, NC 27613-3502
   919-676-9515 (Telephone)
   919-676-9564 (Data/Facsimile)
   Frank_Dawson@Lotus.com (Internet Mail)

doc/rfc2445.txt  view on Meta::CPAN

   the following notation:

     parameter  = altrepparam           ; Alternate text representation
                / cnparam               ; Common name
                / cutypeparam           ; Calendar user type
                / delfromparam          ; Delegator
                / deltoparam            ; Delegatee
                / dirparam              ; Directory entry
                / encodingparam         ; Inline encoding
                / fmttypeparam          ; Format type
                / fbtypeparam           ; Free/busy time type
                / languageparam         ; Language for text
                / memberparam           ; Group or list membership
                / partstatparam         ; Participation status
                / rangeparam            ; Recurrence identifier range
                / trigrelparam          ; Alarm trigger relationship
                / reltypeparam          ; Relationship type
                / roleparam             ; Participation role
                / rsvpparam             ; RSVP expectation
                / sentbyparam           ; Sent by
                / tzidparam             ; Reference to time zone object

doc/rfc2445.txt  view on Meta::CPAN


     Example:

      ATTACH;FMTTYPE=application/binary:ftp://domain.com/pub/docs/
       agenda.doc

4.2.9 Free/Busy Time Type

   Parameter Name: FBTYPE

   Purpose: To specify the free or busy time type.

   Format Definition: The property parameter is defined by the following
   notation:

     fbtypeparam        = "FBTYPE" "=" ("FREE" / "BUSY"
                        / "BUSY-UNAVAILABLE" / "BUSY-TENTATIVE"
                        / x-name
        ; Some experimental iCalendar data type.
                        / iana-token)



Dawson & Stenerson          Standards Track                    [Page 23]

RFC 2445                       iCalendar                   November 1998


        ; Some other IANA registered iCalendar data type.

   Description: The parameter specifies the free or busy time type. The
   value FREE indicates that the time interval is free for scheduling.
   The value BUSY indicates that the time interval is busy because one
   or more events have been scheduled for that interval. The value
   BUSY-UNAVAILABLE indicates that the time interval is busy and that
   the interval can not be scheduled. The value BUSY-TENTATIVE indicates
   that the time interval is busy because one or more events have been
   tentatively scheduled for that interval. If not specified on a
   property that allows this parameter, the default is BUSY.

   Example: The following is an example of this parameter on a FREEBUSY
   property.

     FREEBUSY;FBTYPE=BUSY:19980415T133000Z/19980415T170000Z

4.2.10 Language

doc/rfc2445.txt  view on Meta::CPAN

   The date with local time form is simply a date-time value that does
   not contain the UTC designator nor does it reference a time zone. For
   example, the following represents Janurary 18, 1998, at 11 PM:

     DTSTART:19980118T230000

   Date-time values of this type are said to be "floating" and are not
   bound to any time zone in particular. They are used to represent the
   same hour, minute, and second value regardless of which time zone is
   currently being observed. For example, an event can be defined that
   indicates that an individual will be busy from 11:00 AM to 1:00 PM
   every day, no matter which time zone the person is in. In these
   cases, a local time can be specified. The recipient of an iCalendar
   object with a property value consisting of a local time, without any
   relative time zone information, SHOULD interpret the value as being
   fixed to whatever time zone the ATTENDEE is in at any given moment.
   This means that two ATTENDEEs, in different time zones, receiving the
   same event definition as a floating time, may be participating in the
   event at different actual times. Floating time SHOULD only be used
   where that is the reasonable behavior.

doc/rfc2445.txt  view on Meta::CPAN


Dawson & Stenerson          Standards Track                    [Page 47]

RFC 2445                       iCalendar                   November 1998


   Time values of this type are said to be "floating" and are not bound
   to any time zone in particular. They are used to represent the same
   hour, minute, and second value regardless of which time zone is
   currently being observed. For example, an event can be defined that
   indicates that an individual will be busy from 11:00 AM to 1:00 PM
   every day, no matter which time zone the person is in. In these
   cases, a local time can be specified. The recipient of an iCalendar
   object with a property value consisting of a local time, without any
   relative time zone information, SHOULD interpret the value as being
   fixed to whatever time zone the ATTENDEE is in at any given moment.
   This means that two ATTENDEEs may participate in the same event at
   different UTC times; floating time SHOULD only be used where that is
   reasonable behavior.

   In most cases, a fixed time is desired. To properly communicate a

doc/rfc2445.txt  view on Meta::CPAN

   as DtStart;TzID=US-Eastern:19980714T120000.

4.6 Calendar Components

   The body of the iCalendar object consists of a sequence of calendar
   properties and one or more calendar components. The calendar
   properties are attributes that apply to the calendar as a whole. The
   calendar components are collections of properties that express a
   particular calendar semantic. For example, the calendar component can
   specify an event, a to-do, a journal entry, time zone information, or
   free/busy time information, or an alarm.

   The body of the iCalendar object is defined by the following
   notation:

     icalbody   = calprops component

     calprops   = 2*(

                ; 'prodid' and 'version' are both REQUIRED,
                ; but MUST NOT occur more than once

doc/rfc2445.txt  view on Meta::CPAN




Dawson & Stenerson          Standards Track                    [Page 51]

RFC 2445                       iCalendar                   November 1998


                )

     component  = 1*(eventc / todoc / journalc / freebusyc /
                / timezonec / iana-comp / x-comp)

     iana-comp  = "BEGIN" ":" iana-token CRLF

                  1*contentline

                  "END" ":" iana-token CRLF

     x-comp     = "BEGIN" ":" x-name CRLF

                  1*contentline

                  "END" ":" x-name CRLF

   An iCalendar object MUST include the "PRODID" and "VERSION" calendar
   properties. In addition, it MUST include at least one calendar
   component. Special forms of iCalendar objects are possible to publish
   just busy time (i.e., only a "VFREEBUSY" calendar component) or time
   zone (i.e., only a "VTIMEZONE" calendar component) information. In
   addition, a complex iCalendar object is possible that is used to
   capture a complete snapshot of the contents of a calendar (e.g.,
   composite of many different calendar components). More commonly, an
   iCalendar object will consist of just a single "VEVENT", "VTODO" or
   "VJOURNAL" calendar component.

4.6.1 Event Component

   Component Name: "VEVENT"

doc/rfc2445.txt  view on Meta::CPAN

                resources / rdate / rrule / x-prop

                )

   Description: A "VEVENT" calendar component is a grouping of component
   properties, and possibly including "VALARM" calendar components, that
   represents a scheduled amount of time on a calendar. For example, it
   can be an activity; such as a one-hour long, department meeting from
   8:00 AM to 9:00 AM, tomorrow. Generally, an event will take up time
   on an individual calendar. Hence, the event will appear as an opaque
   interval in a search for busy time. Alternately, the event can have
   its Time Transparency set to "TRANSPARENT" in order to prevent
   blocking of the event in searches for busy time.

   The "VEVENT" is also the calendar component used to specify an
   anniversary or daily reminder within a calendar. These events have a
   DATE value type for the "DTSTART" property instead of the default
   data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
   MUST be specified as a DATE value also. The anniversary type of
   "VEVENT" can span more than one date (i.e, "DTEND" property value is
   set to a calendar date after the "DTSTART" property value).

   The "DTSTART" property for a "VEVENT" specifies the inclusive start

doc/rfc2445.txt  view on Meta::CPAN

RFC 2445                       iCalendar                   November 1998


   The "VEVENT" calendar component cannot be nested within another
   calendar component. However, "VEVENT" calendar components can be
   related to each other or to a "VTODO" or to a "VJOURNAL" calendar
   component with the "RELATED-TO" property.

   Example: The following is an example of the "VEVENT" calendar
   component used to represent a meeting that will also be opaque to
   searches for busy time:

     BEGIN:VEVENT
     UID:19970901T130000Z-123401@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19970903T163000Z
     DTEND:19970903T190000Z
     SUMMARY:Annual Employee Review
     CLASS:PRIVATE
     CATEGORIES:BUSINESS,HUMAN RESOURCES
     END:VEVENT

   The following is an example of the "VEVENT" calendar component used
   to represent a reminder that will not be opaque, but rather
   transparent, to searches for busy time:

     BEGIN:VEVENT
     UID:19970901T130000Z-123402@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19970401T163000Z
     DTEND:19970402T010000Z
     SUMMARY:Laurel is in sensitivity awareness class.
     CLASS:PUBLIC
     CATEGORIES:BUSINESS,HUMAN RESOURCES
     TRANSP:TRANSPARENT
     END:VEVENT

   The following is an example of the "VEVENT" calendar component used
   to represent an anniversary that will occur annually. Since it takes
   up no time, it will not appear as opaque in a search for busy time;
   no matter what the value of the "TRANSP" property indicates:

     BEGIN:VEVENT
     UID:19970901T130000Z-123403@host.com
     DTSTAMP:19970901T1300Z
     DTSTART:19971102
     SUMMARY:Our Blissful Anniversary
     CLASS:CONFIDENTIAL
     CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
     RRULE:FREQ=YEARLY

doc/rfc2445.txt  view on Meta::CPAN

   property is used to specify the calendar date that the journal entry
   is associated with. Generally, it will have a DATE value data type,
   but it can also be used to specify a DATE-TIME value data type.
   Examples of a journal entry include a daily record of a legislative
   body or a journal entry of individual telephone contacts for the day
   or an ordered list of accomplishments for the day. The "VJOURNAL"
   calendar component can also be used to associate a document with a
   calendar date.

   The "VJOURNAL" calendar component does not take up time on a
   calendar. Hence, it does not play a role in free or busy time
   searches - - it is as though it has a time transparency value of
   TRANSPARENT. It is transparent to any such searches.

   The "VJOURNAL" calendar component cannot be nested within another
   calendar component. However, "VJOURNAL" calendar components can be
   related to each other or to a "VEVENT" or to a "VTODO" calendar
   component, with the "RELATED-TO" property.

   Example: The following is an example of the "VJOURNAL" calendar
   component:

doc/rfc2445.txt  view on Meta::CPAN

Dawson & Stenerson          Standards Track                    [Page 57]

RFC 2445                       iCalendar                   November 1998


4.6.4 Free/Busy Component

   Component Name: VFREEBUSY

   Purpose: Provide a grouping of component properties that describe
   either a request for free/busy time, describe a response to a request
   for free/busy time or describe a published set of busy time.

   Formal Definition: A "VFREEBUSY" calendar component is defined by the
   following notation:

     freebusyc  = "BEGIN" ":" "VFREEBUSY" CRLF
                  fbprop
                  "END" ":" "VFREEBUSY" CRLF

     fbprop     = *(

                ; the following are optional,
                ; but MUST NOT occur more than once

                contact / dtstart / dtend / duration / dtstamp /
                organizer / uid / url /

                ; the following are optional,
                ; and MAY occur more than once

                attendee / comment / freebusy / rstatus / x-prop

                )

   Description: A "VFREEBUSY" calendar component is a grouping of
   component properties that represents either a request for, a reply to
   a request for free or busy time information or a published set of
   busy time information.

   When used to request free/busy time information, the "ATTENDEE"
   property specifies the calendar users whose free/busy time is being
   requested; the "ORGANIZER" property specifies the calendar user who
   is requesting the free/busy time; the "DTSTART" and "DTEND"
   properties specify the window of time for which the free/busy time is
   being requested; the "UID" and "DTSTAMP" properties are specified to
   assist in proper sequencing of multiple free/busy time requests.

   When used to reply to a request for free/busy time, the "ATTENDEE"
   property specifies the calendar user responding to the free/busy time
   request; the "ORGANIZER" property specifies the calendar user that
   originally requested the free/busy time; the "FREEBUSY" property
   specifies the free/busy time information (if it exists); and the



Dawson & Stenerson          Standards Track                    [Page 58]

RFC 2445                       iCalendar                   November 1998


   "UID" and "DTSTAMP" properties are specified to assist in proper
   sequencing of multiple free/busy time replies.

   When used to publish busy time, the "ORGANIZER" property specifies
   the calendar user associated with the published busy time; the
   "DTSTART" and "DTEND" properties specify an inclusive time window
   that surrounds the busy time information; the "FREEBUSY" property
   specifies the published busy time information; and the "DTSTAMP"
   property specifies the date/time that iCalendar object was created.

   The "VFREEBUSY" calendar component cannot be nested within another
   calendar component. Multiple "VFREEBUSY" calendar components can be
   specified within an iCalendar object. This permits the grouping of
   Free/Busy information into logical collections, such as monthly
   groups of busy time information.

   The "VFREEBUSY" calendar component is intended for use in iCalendar
   object methods involving requests for free time, requests for busy
   time, requests for both free and busy, and the associated replies.

   Free/Busy information is represented with the "FREEBUSY" property.
   This property provides a terse representation of time periods. One or
   more "FREEBUSY" properties can be specified in the "VFREEBUSY"
   calendar component.

   When present in a "VFREEBUSY" calendar component, the "DTSTART" and
   "DTEND" properties SHOULD be specified prior to any "FREEBUSY"
   properties. In a free time request, these properties can be used in
   combination with the "DURATION" property to represent a request for a
   duration of free time within a specified window of time.

   The recurrence properties ("RRULE", "EXRULE", "RDATE", "EXDATE") are
   not permitted within a "VFREEBUSY" calendar component. Any recurring
   events are resolved into their individual busy time periods using the
   "FREEBUSY" property.

   Example: The following is an example of a "VFREEBUSY" calendar
   component used to request free or busy time information:

     BEGIN:VFREEBUSY
     ORGANIZER:MAILTO:jane_doe@host1.com
     ATTENDEE:MAILTO:john_public@host2.com
     DTSTART:19971015T050000Z
     DTEND:19971016T050000Z
     DTSTAMP:19970901T083000Z
     END:VFREEBUSY





Dawson & Stenerson          Standards Track                    [Page 59]

RFC 2445                       iCalendar                   November 1998


   The following is an example of a "VFREEBUSY" calendar component used
   to reply to the request with busy time information:

     BEGIN:VFREEBUSY
     ORGANIZER:MAILTO:jane_doe@host1.com
     ATTENDEE:MAILTO:john_public@host2.com
     DTSTAMP:19970901T100000Z
     FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M,
      19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M
     URL:http://host2.com/pub/busy/jpublic-01.ifb
     COMMENT:This iCalendar file contains busy time information for
       the next three months.
     END:VFREEBUSY

   The following is an example of a "VFREEBUSY" calendar component used
   to publish busy time information.

     BEGIN:VFREEBUSY
     ORGANIZER:jsmith@host.com
     DTSTART:19980313T141711Z
     DTEND:19980410T141711Z
     FREEBUSY:19980314T233000Z/19980315T003000Z
     FREEBUSY:19980316T153000Z/19980316T163000Z
     FREEBUSY:19980318T030000Z/19980318T040000Z
     URL:http://www.host.com/calendar/busytime/jsmith.ifb
     END:VFREEBUSY

4.6.5 Time Zone Component

   Component Name: VTIMEZONE

   Purpose: Provide a grouping of component properties that defines a
   time zone.

   Formal Definition: A "VTIMEZONE" calendar component is defined by the

doc/rfc2445.txt  view on Meta::CPAN

   identifier property parameters can be specified on this property.

   Conformance: This property can be specified in "VEVENT" or
   "VFREEBUSY" calendar components.

   Description: Within the "VEVENT" calendar component, this property
   defines the date and time by which the event ends. The value MUST be
   later in time than the value of the "DTSTART" property.

   Within the "VFREEBUSY" calendar component, this property defines the
   end date and time for the free or busy time information. The time
   MUST be specified in the UTC time format. The value MUST be later in
   time than the value of the "DTSTART" property.

   Format Definition: The property is defined by the following notation:

     dtend      = "DTEND" dtendparam":" dtendval CRLF

     dtendparam = *(

                ; the following are optional,

doc/rfc2445.txt  view on Meta::CPAN

   Conformance: This property can be specified in the "VEVENT", "VTODO",
   "VFREEBUSY", or "VTIMEZONE" calendar components.

   Description: Within the "VEVENT" calendar component, this property
   defines the start date and time for the event. The property is
   REQUIRED in "VEVENT" calendar components. Events can have a start
   date/time but no end date/time. In that case, the event does not take
   up any time.

   Within the "VFREEBUSY" calendar component, this property defines the
   start date and time for the free or busy time information. The time
   MUST be specified in UTC time.

   Within the "VTIMEZONE" calendar component, this property defines the
   effective start date and time for a time zone specification. This
   property is REQUIRED within each STANDARD and DAYLIGHT part included
   in "VTIMEZONE" calendar components and MUST be specified as a local
   DATE-TIME without the "TZID" property parameter.

   Format Definition: The property is defined by the following notation:

doc/rfc2445.txt  view on Meta::CPAN


   The following is an example of this property that specifies an
   interval of time of 15 minutes.

     DURATION:PT15M

4.8.2.6 Free/Busy Time

   Property Name: FREEBUSY

   Purpose: The property defines one or more free or busy time
   intervals.

   Value Type: PERIOD. The date and time values MUST be in an UTC time
   format.

   Property Parameters: Non-standard or free/busy time type property
   parameters can be specified on this property.

   Conformance: The property can be specified in a "VFREEBUSY" calendar
   component.

   Property Parameter: "FBTYPE" and non-standard parameters can be
   specified on this property.

   Description: These time periods can be specified as either a start
   and end date-time or a start date-time and duration. The date and

doc/rfc2445.txt  view on Meta::CPAN




Dawson & Stenerson          Standards Track                    [Page 95]

RFC 2445                       iCalendar                   November 1998


   Format Definition: The property is defined by the following notation:

     freebusy   = "FREEBUSY" fbparam ":" fbvalue
                  CRLF

     fbparam    = *(
                ; the following is optional,
                ; but MUST NOT occur more than once

                (";" fbtypeparam) /

                ; the following is optional,
                ; and MAY occur more than once

doc/rfc2445.txt  view on Meta::CPAN

     FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H

     FREEBUSY;FBTYPE=FREE:19970308T160000Z/PT3H,19970308T200000Z/PT1H,
      19970308T230000Z/19970309T000000Z

4.8.2.7 Time Transparency

   Property Name: TRANSP

   Purpose: This property defines whether an event is transparent or not
   to busy time searches.

   Value Type: TEXT

   Property Parameters: Non-standard property parameters can be
   specified on this property.

   Conformance: This property can be specified once in a "VEVENT"
   calendar component.

   Description: Time Transparency is the characteristic of an event that

doc/rfc2445.txt  view on Meta::CPAN

   that consume actual time for the individual or resource associated



Dawson & Stenerson          Standards Track                    [Page 96]

RFC 2445                       iCalendar                   November 1998


   with the calendar SHOULD be recorded as OPAQUE, allowing them to be
   detected by free-busy time searches. Other events, which do not take
   up the individual's (or resource's) time SHOULD be recorded as
   TRANSPARENT, making them invisible to free-busy time searches.

   Format Definition: The property is specified by the following
   notation:

     transp     = "TRANSP" tranparam ":" transvalue CRLF

     tranparam  = *(";" xparam)

     transvalue = "OPAQUE"      ;Blocks or opaque on busy time searches.
                / "TRANSPARENT" ;Transparent on busy time searches.
        ;Default value is OPAQUE

   Example: The following is an example of this property for an event
   that is transparent or does not block on free/busy time searches:

     TRANSP:TRANSPARENT

   The following is an example of this property for an event that is
   opaque or blocks on free/busy time searches:

     TRANSP:OPAQUE

4.8.3 Time Zone Component Properties

   The following properties specify time zone information in calendar
   components.

4.8.3.1 Time Zone Identifier

doc/rfc2445.txt  view on Meta::CPAN

   Property Parameters: Non-standard, language, calendar user type,
   group or list membership, participation role, participation status,
   RSVP expectation, delegatee, delegator, sent by, common name or
   directory entry reference property parameters can be specified on
   this property.

   Conformance: This property MUST be specified in an iCalendar object
   that specifies a group scheduled calendar entity. This property MUST
   NOT be specified in an iCalendar object when publishing the calendar
   information (e.g., NOT in an iCalendar object that specifies the
   publication of a calendar user's busy time, event, to-do or journal).
   This property is not specified in an iCalendar object that specifies
   only a time zone definition or that defines calendar entities that
   are not group scheduled entities, but are entities only on a single
   user's calendar.

   Description: The property MUST only be specified within calendar
   components to specify participants, non-participants and the chair of
   a group scheduled calendar entity. The property is specified within
   an "EMAIL" category of the "VALARM" calendar component to specify an
   email address that is to receive the email type of iCalendar alarm.

doc/rfc2445.txt  view on Meta::CPAN


   Value Type: CAL-ADDRESS

   Property Parameters: Non-standard, language, common name, directory
   entry reference, sent by property parameters can be specified on this
   property.

   Conformance: This property MUST be specified in an iCalendar object
   that specifies a group scheduled calendar entity. This property MUST
   be specified in an iCalendar object that specifies the publication of
   a calendar user's busy time. This property MUST NOT be specified in
   an iCalendar object that specifies only a time zone definition or
   that defines calendar entities that are not group scheduled entities,
   but are entities only on a single user's calendar.

   Description: The property is specified within the "VEVENT", "VTODO",
   "VJOURNAL calendar components to specify the organizer of a group
   scheduled calendar entity. The property is specified within the
   "VFREEBUSY" calendar component to specify the calendar user
   requesting the free or busy time. When publishing a "VFREEBUSY"
   calendar component, the property is used to specify the calendar that
   the published busy time came from.

   The property has the property parameters CN, for specifying the
   common or display name associated with the "Organizer", DIR, for
   specifying a pointer to the directory information associated with the
   "Organizer", SENT-BY, for specifying another calendar user that is
   acting on behalf of the "Organizer". The non-standard parameters may
   also be specified on this property. If the LANGUAGE property
   parameter is specified, the identified language applies to the CN
   parameter value.

doc/rfc2445.txt  view on Meta::CPAN

   The COMMA and SEMICOLON separator characters in the property value
   are BACKSLASH character escaped because they appear in a  text value.

     REQUEST-STATUS:2.0;Success

     REQUEST-STATUS:3.1;Invalid property value;DTSTART:96-Apr-01

     REQUEST-STATUS:2.8; Success\, repeating event ignored. Scheduled
      as a single event.;RRULE:FREQ=WEEKLY\;INTERVAL=2

     REQUEST-STATUS:4.1;Event conflict. Date/time is busy.

     REQUEST-STATUS:3.7;Invalid calendar user;ATTENDEE:
      MAILTO:jsmith@host.com

5 iCalendar Object Examples

   The following examples are provided as an informational source of
   illustrative iCalendar objects consistent with this content type.

   The following example specifies a three-day conference that begins at

doc/rfc2445.txt  view on Meta::CPAN

      Participants: John Smith, Jane Doe, Jim Dandy\n-It was
       decided that the requirements need to be signed off by
       product marketing.\n-Project processes were accepted.\n
      -Project schedule needs to account for scheduled holidays
       and employee vacation time. Check with HR for specific
       dates.\n-New schedule will be distributed by Friday.\n-
      Next weeks meeting is cancelled. No meeting until 3/23.
     END:VJOURNAL
     END:VCALENDAR

   The following is an example of published busy time information. The
   iCalendar object might be placed in the network resource
   www.host.com/calendar/busytime/jsmith.ifb.

     BEGIN:VCALENDAR
     VERSION:2.0
     PRODID:-//RDU Software//NONSGML HandCal//EN
     BEGIN:VFREEBUSY



Dawson & Stenerson          Standards Track                   [Page 139]

RFC 2445                       iCalendar                   November 1998


     ORGANIZER:MAILTO:jsmith@host.com
     DTSTART:19980313T141711Z
     DTEND:19980410T141711Z
     FREEBUSY:19980314T233000Z/19980315T003000Z
     FREEBUSY:19980316T153000Z/19980316T163000Z
     FREEBUSY:19980318T030000Z/19980318T040000Z
     URL:http://www.host.com/calendar/busytime/jsmith.ifb
     END:VFREEBUSY
     END:VCALENDAR

6 Recommended Practices

   These recommended practices should be followed in order to assure
   consistent handling of the following cases for an iCalendar object.

   1.  Content lines longer than 75 octets SHOULD be folded.

   2.  A calendar entry with a "DTSTART" property but no "DTEND"
       property does not take up any time. It is intended to represent
       an event that is associated with a given calendar date and time
       of day, such as an anniversary. Since the event does not take up
       any time, it MUST NOT be used to record busy time no matter what
       the value for the "TRANSP" property.

   3.  When the "DTSTART" and "DTEND", for "VEVENT", "VJOURNAL" and
       "VFREEBUSY" calendar components, and "DTSTART" and "DUE", for
       "VTODO" calendar components, have the same value data type (e.g.,
       DATE-TIME), they SHOULD specify values in the same time format
       (e.g., UTC time format).

   4.  When the combination of the "RRULE" and "RDATE" properties on an
       iCalendar object produces multiple instances having the same

lib/Data/ICal.pm  view on Meta::CPAN


=head1 DESCRIPTION

A L<Data::ICal> object represents a C<VCALENDAR> object as defined in the
iCalendar protocol (RFC 2445, MIME type "text/calendar"), as implemented in many
popular calendaring programs such as Apple's iCal.

Each L<Data::ICal> object is a collection of "entries", which are objects of a
subclass of L<Data::ICal::Entry>.  The types of entries defined by iCalendar
(which refers to them as "components") include events, to-do items, journal
entries, free/busy time indicators, and time zone descriptors; in addition,
events and to-do items can contain alarm entries.  (Currently, L<Data::ICal>
only implements to-do items and events.)

L<Data::ICal> is a subclass of L<Data::ICal::Entry>; see its manpage for more
methods applicable to L<Data::ICal>.

=head1 METHODS

=cut

lib/Data/ICal/Entry.pm  view on Meta::CPAN

    $output .= $self->footer(%args);

    return $output;
}

=head2 add_entry $entry

Adds an entry to this entry.  (According to the standard, this should
only be called on either a to-do or event entry with an alarm entry,
or on a calendar entry (L<Data::ICal>) with a to-do, event, journal,
timezone, or free/busy entry.)

Returns true if the entry was successfully added, and false otherwise
(perhaps because you tried to add an entry of an invalid type, but
this check hasn't been implemented yet).

=cut

sub add_entry {
    my $self  = shift;
    my $entry = shift;

lib/Data/ICal/Entry.pm  view on Meta::CPAN

        @_
    );
    return 'END:' . $self->ical_entry_type . $args{crlf};
}

# mapping of event types to class (under the Data::Ical::Event namespace)
my %_generic = (
    vevent    => 'Event',
    vtodo     => 'Todo',
    vjournal  => 'Journal',
    vfreebusy => 'FreeBusy',
    vtimezone => 'TimeZone',
    standard  => 'TimeZone::Standard',
    daylight  => 'TimeZone::Daylight',
);

=head2 parse_object

Translate a L<Text::vFile::asData> sub object into the appropriate
L<Data::iCal::Event> subtype.

lib/Data/ICal/Entry/FreeBusy.pm  view on Meta::CPAN

use warnings;
use strict;

package Data::ICal::Entry::FreeBusy;

use base qw/Data::ICal::Entry/;

=head1 NAME

Data::ICal::Entry::FreeBusy - Represents blocks of free and busy time in an iCalendar file

=head1 SYNOPSIS

    my $vfreebusy = Data::ICal::Entry::FreeBusy->new();
    $vfreebusy->add_properties(
        organizer => 'MAILTO:jsmith@host.com',
        # Dat*e*::ICal is not a typo here
        freebusy   => Date::ICal->new( epoch => ... )->ical . '/' . Date::ICal->new( epoch => ... )->ical,
    );

    $calendar->add_entry($vfreebusy);

=head1 DESCRIPTION

A L<Data::ICal::Entry::FreeBusy> object represents a request for
information about free and busy time or a reponse to such a request,
in an iCalendar file.  (Note that the iCalendar RFC refers to entries
as "components".)  It is a subclass of L<Data::ICal::Entry> and
accepts all of its methods.

=head1 METHODS

=cut

=head2 ical_entry_type

lib/Data/ICal/Entry/FreeBusy.pm  view on Meta::CPAN

=cut

sub mandatory_unique_properties {
    my $self = shift;
    return $self->rfc_strict ? ("uid") : ()
}

=head2 optional_unique_properties

According to the iCalendar standard, the following properties may be
specified at most one time for a free/busy entry:

        contact  dtstart  dtend  duration  dtstamp
        organizer  uid  url

=cut

sub optional_unique_properties {
    my $self = shift;
    my @ret = qw(
        contact  dtstart  dtend  duration  dtstamp
        organizer  url
    );
    push @ret, "uid" unless $self->rfc_strict;
    return @ret;
}

=head2 optional_repeatable_properties

According to the iCalendar standard, the following properties may be
specified any number of times for free/busy entry:

        attendee comment freebusy request-status

=cut

sub optional_repeatable_properties {
    qw(
        attendee comment freebusy request-status
    );
}

=head1 AUTHOR

Best Practical Solutions, LLC E<lt>modules@bestpractical.comE<gt>

=head1 LICENCE AND COPYRIGHT

Copyright (c) 2005 - 2020, Best Practical Solutions, LLC.  All rights reserved.



( run in 0.301 second using v1.01-cache-2.11-cpan-87723dcf8b7 )