
Net::ICal::Component -- the base class for ICalender components

You never create an instance of this class directly, so we'll assume $c is an already created component.
# returns an ICal string for this component. $c->as_ical;

This is the base class we derive specific ICal components from. It contains a map of properties which can be set and accessed at will; see the docs for Class::MethodMapper for more on how it works.
$comp = new Net::ICal::Alarm( action => 'DISPLAY', trigger => "20000101T073000", description => "Wake Up!" );

Creates a new ICal component of type $name, with Class::MethodMapper map $map and arguments %args. You never call this directly, but you use the specific component's new constructor instead, which in turn calls this.
Creates a new Net::ICal::Component from a string containing iCalendar data. Use this to read in a new object before you do things with it.
Returns a Net::ICal::Component object on success, or undef on failure.

Get or set the type of this component. You aren't supposed to ever set this directly. To create a component of a specific type, use the new method of the corresponding class.
Returns 1 if the component is valid according to RFC 2445. If it isn't undef is returned, and $@ contains a listref of errors
Returns an ICal string that represents this component
returns a true value if one of the listed property names is present on the component and undef if not
checks whether the component has a value for property 'name' and optionally checks whether it is value 'value'
checks whether the component has a value for property 'name' and returns a true value if it has, and undef if it doesn't
returns undef if both the properties name1 and name2 are present. Otherwise, it returns a true value. On error, it sets $@.

These are for internal use only, and are included here for the benefit of Net::ICal developers.
the first line of the iCal will look like BEGIN:VALARM or something. we need to know what comes after the V, because that's what sort of component we'll be creating.
Returns ALARM, EVENT, TODO, JOURNAL, FREEBUSY, etc, or undef for failure.
$comp is "ALARM" or something. We generate the name of a type of object we want to create, and call the _create method on that object.
Handle multiline fields; see "unfolding" in RFC 2445. Make all the multiple fields we've been handed into single-line fields.
Parse and validate the lines of iCalendar data we got to make sure it looks iCal-like.
Given a property line from an iCalendar file, parses it and returns the name and the value of that property.
Given a property name/key section, parses it and returns the param name and the parameter string.
If a new ICal subclass object needs to be created, load the module and return a new instance of it. Otherwise, just return the value of the property.

More documentation pointers can be found in L<Net::ICal>.
Most of the internals of this code are built on C::MM. You need to understand what it does first.