view release on metacpan or search on metacpan
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.