[Rt-commit] r3423 - in Data-iCal: . lib/Data lib/Data/ICal
lib/Data/ICal/Entry lib/Data/iCal
jesse at bestpractical.com
jesse at bestpractical.com
Thu Jul 7 22:46:34 EDT 2005
Author: jesse
Date: Thu Jul 7 22:46:33 2005
New Revision: 3423
Added:
Data-iCal/lib/Data/ICal/
Data-iCal/lib/Data/ICal.pm
Data-iCal/lib/Data/ICal/Entry/
Data-iCal/lib/Data/ICal/Entry.pm
Data-iCal/lib/Data/ICal/Property.pm
Data-iCal/lib/Data/ICal/Todo.pm
Removed:
Data-iCal/lib/Data/iCal/
Data-iCal/lib/Data/iCal.pm
Modified:
Data-iCal/ (props changed)
Log:
r22363 at hualien: jesse | 2005-07-07 22:45:17 -0400
* the rest of iCal -> ICal
Added: Data-iCal/lib/Data/ICal.pm
==============================================================================
--- (empty file)
+++ Data-iCal/lib/Data/ICal.pm Thu Jul 7 22:46:33 2005
@@ -0,0 +1,228 @@
+use warnings;
+use strict;
+
+package Data::ICal;
+
+our $VERSION = '0.001';
+
+use Carp;
+
+# Module implementation here
+
+
+sub new {
+ my $class = shift;
+ my $self = {};
+ bless $self, $class;
+ return $self;
+}
+
+
+
+=head2 add_entry
+
+=cut
+
+sub add_entry {
+ my $self = shift;
+ my $entry = shift;
+ push @{$self->{entries}}, $entry;
+}
+
+=head2 entries
+
+Returns a ref to the array of entries in this Data::ICal object
+
+=cut
+
+sub entries {
+ my $self = shift;
+ return $self->{'entries'} || [];
+}
+
+
+=head2 as_string
+
+
+=cut
+
+
+sub as_string {
+ my $self = shift;
+
+ my $content;
+ $content = $self->header();
+
+
+ foreach my $entry (@{$self->entries}) {
+ $content .= $entry->as_string();
+ }
+
+ $content .= $self->footer() ."\n";
+ return($content);
+}
+
+
+sub header {
+ my $self = shift;
+ return join("\n", "BEGIN:VCALENDAR", "VERSION:2.0", "PRODID:".$self->product_id) ."\n";
+
+}
+
+sub footer {
+ my $self = shift;
+ return "END:VCALENDAR";
+}
+
+sub product_id {
+ my $self = shift;
+ return "Data::ICal $VERSION";
+}
+
+
+
+1; # Magic true value required at end of module
+__END__
+
+=head1 NAME
+
+Data::ICal - [One line description of module's purpose here]
+
+
+=head1 SYNOPSIS
+
+ use Data::ICal;
+
+=for author to fill in:
+ Brief code example(s) here showing commonest usage(s).
+ This section will be as far as many users bother reading
+ so make it as educational and exeplary as possible.
+
+
+=head1 DESCRIPTION
+
+=for author to fill in:
+ Write a full description of the module and its features here.
+ Use subsections (=head2, =head3) as appropriate.
+
+
+=head1 INTERFACE
+
+=for author to fill in:
+ Write a separate section listing the public components of the modules
+ interface. These normally consist of either subroutines that may be
+ exported, or methods that may be called on objects belonging to the
+ classes provided by the module.
+
+
+=head1 DIAGNOSTICS
+
+=for author to fill in:
+ List every single error and warning message that the module can
+ generate (even the ones that will "never happen"), with a full
+ explanation of each problem, one or more likely causes, and any
+ suggested remedies.
+
+=over
+
+=item C<< Error message here, perhaps with %s placeholders >>
+
+[Description of error here]
+
+=item C<< Another error message here >>
+
+[Description of error here]
+
+[Et cetera, et cetera]
+
+=back
+
+
+=head1 CONFIGURATION AND ENVIRONMENT
+
+=for author to fill in:
+ A full explanation of any configuration system(s) used by the
+ module, including the names and locations of any configuration
+ files, and the meaning of any environment variables or properties
+ that can be set. These descriptions must also include details of any
+ configuration language used.
+
+Data::ICal requires no configuration files or environment variables.
+
+
+=head1 DEPENDENCIES
+
+=for author to fill in:
+ A list of all the other modules that this module relies upon,
+ including any restrictions on versions, and an indication whether
+ the module is part of the standard Perl distribution, part of the
+ module's distribution, or must be installed separately. ]
+
+None.
+
+
+=head1 INCOMPATIBILITIES
+
+=for author to fill in:
+ A list of any modules that this module cannot be used in conjunction
+ with. This may be due to name conflicts in the interface, or
+ competition for system or program resources, or due to internal
+ limitations of Perl (for example, many modules that use source code
+ filters are mutually incompatible).
+
+None reported.
+
+
+=head1 BUGS AND LIMITATIONS
+
+=for author to fill in:
+ A list of known problems with the module, together with some
+ indication Whether they are likely to be fixed in an upcoming
+ release. Also a list of restrictions on the features the module
+ does provide: data types that cannot be handled, performance issues
+ and the circumstances in which they may arise, practical
+ limitations on the size of data sets, special cases that are not
+ (yet) handled, etc.
+
+No bugs have been reported.
+
+Please report any bugs or feature requests to
+C<bug-data-ical-generator at rt.cpan.org>, or through the web interface at
+L<http://rt.cpan.org>.
+
+
+=head1 AUTHOR
+
+Jesse Vincent C<< <jesse at bestpractical.com> >>
+
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2005, Best Practical Solutions, LLC. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
+
+=head1 DISCLAIMER OF WARRANTY
+
+BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
+YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR, OR CORRECTION.
+
+IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE
+LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
+THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
Added: Data-iCal/lib/Data/ICal/Entry.pm
==============================================================================
--- (empty file)
+++ Data-iCal/lib/Data/ICal/Entry.pm Thu Jul 7 22:46:33 2005
@@ -0,0 +1,73 @@
+use warnings;
+use strict;
+
+package Data::ICal::Entry;
+use Data::ICal::Property;
+
+
+sub new {
+ my $class = shift;
+ my $self = {};
+ bless $self, $class;
+ return $self;
+}
+
+
+
+sub as_string {
+ my $self = shift;
+
+ return join( "\n",
+ $self->header, ( map { $_->as_string } @{ $self->properties } ),
+ $self->footer )
+ . "\n";
+
+}
+
+sub properties {
+ my $self = shift;
+ return $self->{'properties'} || [];
+}
+
+sub add_property {
+ my $self = shift;
+ my $prop = shift;
+ my $val = shift;
+ push @{$self->{'properties'}}, Data::ICal::Property->new($prop => $val);
+}
+
+sub add_properties {
+ my $self = shift;
+ my %args = @_;
+ while (my ( $prop, $val) = each %args) {
+ $self->add_property( $prop => $val);
+ }
+}
+
+
+sub mandatory_unique_properties {
+}
+
+sub mandatory_repeatable_properties {
+}
+
+sub optional_unique_properties {
+}
+
+sub optional_repeatable_properties {
+}
+
+sub ical_entry_type {
+ return 'UNDEFINED';
+}
+
+sub header {
+ my $self = shift;
+ return 'BEGIN:'.$self->ical_entry_type;
+}
+
+sub footer {
+ my $self = shift;
+ return 'END:'.$self->ical_entry_type;
+}
+1;
Added: Data-iCal/lib/Data/ICal/Property.pm
==============================================================================
--- (empty file)
+++ Data-iCal/lib/Data/ICal/Property.pm Thu Jul 7 22:46:33 2005
@@ -0,0 +1,27 @@
+use warnings;
+use strict;
+
+package Data::ICal::Property;
+
+use base qw/Class::Accessor/;
+
+__PACKAGE__->mk_accessors(qw(key value));
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ bless $self, $class;
+
+ $self->key(shift);
+ $self->value(shift);
+ return ($self);
+}
+
+sub as_string {
+ my $self = shift;
+ return uc($self->key).":".$self->value;
+}
+
+1;
+
Added: Data-iCal/lib/Data/ICal/Todo.pm
==============================================================================
--- (empty file)
+++ Data-iCal/lib/Data/ICal/Todo.pm Thu Jul 7 22:46:33 2005
@@ -0,0 +1,28 @@
+use warnings;
+use strict;
+
+package Data::ICal::Todo;
+
+use base qw/Data::ICal::Entry/;
+
+sub ical_entry_type { 'VTODO' }
+sub optional_unique_properties {
+ qw(
+ class completed created description dtstamp
+ dtstart geo last-mod location organizer
+ percent priority recurid seq status
+ summary uid url
+ );
+}
+
+sub optional_repeatable_properties {
+ qw(
+ attach attendee categories comment contact
+ exdate exrule rstatus related resources
+ rdate rrule x-prop
+ );
+}
+
+
+
+1;
More information about the Rt-commit
mailing list