[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