r2532 - in packages: . libtie-ical-perl libtie-ical-perl/branches
libtie-ical-perl/branches/upstream
libtie-ical-perl/branches/upstream/current
libtie-ical-perl/branches/upstream/current/lib
libtie-ical-perl/branches/upstream/current/lib/Tie
libtie-ical-perl/branches/upstream/current/samples
libtie-ical-perl/branches/upstream/current/t
gregor herrmann
gregoa-guest at costa.debian.org
Sun Apr 9 13:38:37 UTC 2006
Author: gregoa-guest
Date: 2006-04-09 13:38:36 +0000 (Sun, 09 Apr 2006)
New Revision: 2532
Added:
packages/libtie-ical-perl/
packages/libtie-ical-perl/branches/
packages/libtie-ical-perl/branches/upstream/
packages/libtie-ical-perl/branches/upstream/current/
packages/libtie-ical-perl/branches/upstream/current/Build.PL
packages/libtie-ical-perl/branches/upstream/current/CHANGES
packages/libtie-ical-perl/branches/upstream/current/MANIFEST
packages/libtie-ical-perl/branches/upstream/current/META.yml
packages/libtie-ical-perl/branches/upstream/current/Makefile.PL
packages/libtie-ical-perl/branches/upstream/current/README
packages/libtie-ical-perl/branches/upstream/current/TODO
packages/libtie-ical-perl/branches/upstream/current/lib/
packages/libtie-ical-perl/branches/upstream/current/lib/Tie/
packages/libtie-ical-perl/branches/upstream/current/lib/Tie/iCal.pm
packages/libtie-ical-perl/branches/upstream/current/samples/
packages/libtie-ical-perl/branches/upstream/current/samples/demo.ics
packages/libtie-ical-perl/branches/upstream/current/samples/demo.pl
packages/libtie-ical-perl/branches/upstream/current/samples/uniquify.pl
packages/libtie-ical-perl/branches/upstream/current/t/
packages/libtie-ical-perl/branches/upstream/current/t/a_use.t
packages/libtie-ical-perl/branches/upstream/current/t/b_tie.t
packages/libtie-ical-perl/branches/upstream/current/t/c_storefetch.t
packages/libtie-ical-perl/tags/
Log:
[svn-inject] Installing original source of libtie-ical-perl
Added: packages/libtie-ical-perl/branches/upstream/current/Build.PL
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/Build.PL 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/Build.PL 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,11 @@
+use Module::Build;
+my $build = Module::Build->new(
+ module_name => 'Tie::iCal',
+ license => 'perl',
+ requires => {
+ 'Tie::File' => '0.97',
+ },
+ dist_author => 'Blair Sutton <bsdz at cpan.org>',
+ dist_abstract => 'Tie iCal files to Perl hashes',
+);
+$build->create_build_script;
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/Build.PL
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/CHANGES
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/CHANGES 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/CHANGES 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,25 @@
+CHANGES
+
+0.12 -> 0.13
+corrected unfold behaviour with "\n" character sequences.
+corrected property extraction with "\n" character sequences.
+added more documentation.
+
+0.11 -> 0.12
+fixed typo in Makefile.PL ASTRACT.
+fixed exists reset key interator bug in seekUid.
+added uniquify.pl example.
+added more documentation.
+
+0.10 -> 0.11
+added modified parse_line to ignore single quotes.
+remove dependency on Text::ParseWords.
+added b_tie.t test.
+fixed UID bug on STORE method.
+fixed typo in subcomponent creation.
+added c_storefetch.t test.
+fold lines over 75 characters.
+
+0.09 -> 0.10
+support multiple content lines with/without params.
+FETCH, EXISTS, DELETE all use seekUid.
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/CHANGES
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/MANIFEST 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/MANIFEST 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,14 @@
+Makefile.PL
+Build.PL
+MANIFEST This list of files
+META.yml
+README
+t/a_use.t
+t/b_tie.t
+t/c_storefetch.t
+samples/demo.pl
+samples/demo.ics
+samples/uniquify.pl
+TODO
+CHANGES
+lib/Tie/iCal.pm
Property changes on: packages/libtie-ical-perl/branches/upstream/current/MANIFEST
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/META.yml
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/META.yml 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/META.yml 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,11 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: Tie-iCal
+version: 0.13
+version_from: lib/Tie/iCal.pm
+installdirs: site
+requires:
+ Tie::File: 0.97
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.17
Property changes on: packages/libtie-ical-perl/branches/upstream/current/META.yml
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/Makefile.PL 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/Makefile.PL 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,23 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+
+WriteMakefile(
+ 'NAME' => 'Tie::iCal',
+ 'VERSION_FROM' => 'lib/Tie/iCal.pm',
+ 'PM' => {
+ 'lib/Tie/iCal.pm' => '$(INST_LIBDIR)/iCal.pm',
+ },
+ 'PL_FILES' => {},
+ 'PREREQ_PM' => {
+ 'Tie::File' => '0.97',
+ },
+ ($] ge '5.005') ?
+ (
+ 'AUTHOR' => 'Blair Sutton (bsdz at cpan.org)',
+ 'ABSTRACT' => 'Tie iCal files to Perl hashes',
+ )
+ : (),
+);
+
+
Property changes on: packages/libtie-ical-perl/branches/upstream/current/Makefile.PL
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/README
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/README 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/README 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,31 @@
+Tie::iCal
+=========
+
+Copyright (c) 2005 Blair Sutton. All rights reserved.
+This program is free software; you can redistribute
+it and/or modify it under the same terms as Perl itself.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+ Tie::File
+
+Both should come with bundled with the latest version of Perl.
+
+INSTRUCTIONS
+
+Please read the perldoc.
+
+AUTHOR
+
+ Blair Sutton (bsdz at cpan.org)
Property changes on: packages/libtie-ical-perl/branches/upstream/current/README
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/TODO
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/TODO 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/TODO 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,4 @@
+To Do
+=====
+delete empty VCALENDAR blocks.
+more examples.
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/TODO
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/lib/Tie/iCal.pm
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/lib/Tie/iCal.pm 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/lib/Tie/iCal.pm 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,593 @@
+package Tie::iCal;
+
+use strict;
+require Exporter;
+our $VERSION = 0.13;
+our @ISA = qw(Exporter);
+
+use Tie::File;
+
+=head1 NAME
+
+Tie::iCal - Tie iCal files to Perl hashes.
+
+=head1 VERSION
+
+This document describes version 0.13 released 29th January 2005.
+
+=head1 SYNOPSIS
+
+ use Tie::iCal;
+
+ tie %my_events, 'Tie::iCal', "mycalendar.ics" or die "Failed to tie file!\n";
+ tie %your_events, 'Tie::iCal', "yourcalendar.ics" or die "Failed to tie file!\n";
+
+ $my_events{"A-NEW-UNIQUE-ID"} = [
+ 'VEVENT',
+ {
+ 'SUMMARY' => 'Bastille Day Party',
+ 'DTSTAMP' => '19970714T170000Z',
+ 'DTEND' => '19970715T035959Z',
+ }
+ ];
+
+ tie %our_events, 'Tie::iCal', "ourcalendar.ics" or die "Failed to tie file!\n";
+
+ # assuming %my_events and %your_events
+ # have no common keys (unless that's your intention)
+ #
+ while (my($uid,$event) = each(%my_events)) {
+ $our_events{$uid} = $event;
+ }
+ while (my($uid,$event) = each(%your_events)) {
+ $our_events{$uid} = $event;
+ }
+
+ untie %our_events;
+ untie %your_events;
+ untie %my_events;
+
+=head1 DEPENDENCIES
+
+ Tie::File
+
+=head1 DESCRIPTION
+
+Tie::iCal represents an RFC2445 iCalendar file as a Perl hash. Each key in the hash represents
+an iCalendar component like VEVENT, VTODO or VJOURNAL. Each component in the file must have
+a unique UID property as specified in the RFC 2445. A file containing non-unique UIDs can
+be converted to have only unique UIDs (see samples/uniquify.pl).
+
+The module makes very little effort in understanding what each iCalendar property means and concentrates
+on the format of the iCalendar file only.
+
+=head1 FILE LOCKING
+
+The Tie::iCal object returned by tie can also be used to access the underlying Tie::File object.
+This is accessable via the 'A' class variable.
+This may be useful for file locking.
+
+ my $ical = tie %events, 'Tie::iCal', "mycalendar.ics";
+ $ical->{A}->flock;
+
+=head1 DATES
+
+The iCalendar specification uses a special format for dates. This module makes no effort in trying
+to interpret dates in this format. You should look at the Date::ICal module that can convert between
+Unix epoch dates and iCalendar date strings.
+
+=cut
+
+sub TIEHASH {
+ my ($p, $f, %O) = @_;
+
+ tie my @a, 'Tie::File', $f, recsep => "\r\n" or die "failed to open ical file\n";
+ $O{A} = \@a; # file array
+ $O{i} = 0; # current file index for FIRSTKEY and NEXTKEY
+ $O{C} = (); # uid to index cache
+
+ bless \%O => $p;
+}
+
+sub FETCH {
+ my $self = shift;
+ my $uid = shift;
+
+ my $index = $self->seekUid($uid);
+
+ return defined $index ? $self->toHash($index) : undef;
+}
+
+sub EXISTS {
+ my $self = shift;
+ my $uid = shift;
+
+ my $index = $self->seekUid($uid);
+
+ return defined $index ? 1 : 0;
+}
+
+sub FIRSTKEY {
+ my $self = shift;
+
+ $self->{i} = 0;
+ for my $line (@{$self->{A}}) {
+ if ($line =~ m/^UID/) {
+ if ($self->unfold($self->{i}) =~ /^UID.*:(.*)$/) {
+ $self->{C}->{$1} = $self->{i}; # cache in any case
+ return $1;
+ } else {
+ warn("FISRTKEY: discovered illegal UID property format, should be like UID;...:..., ignoring for now\n");
+ }
+ }
+ $self->{i}++;
+ }
+}
+
+# copy of FIRSTKEY but with extra condition $self->{i} > last index
+#
+sub NEXTKEY {
+ my $self = shift;
+
+ my $i = $self->{i};
+ $self->{i} = 0;
+ for my $line (@{$self->{A}}) {
+ if ($line =~ m/^UID/ && $self->{i} > $i) {
+ if ($self->unfold($self->{i}) =~ /^UID.*:(.*)$/) {
+ $self->{C}->{$1} = $self->{i}; # cache in any case
+ return $1;
+ } else {
+ warn("NEXTKEY: discovered illegal UID property format, should be like UID;...:..., ignoring for now\n");
+ }
+ }
+ $self->{i}++;
+ }
+ return undef;
+}
+
+sub SCALAR {
+ my $self = shift;
+
+ my $count = 0;
+ for my $line (@{$self->{A}}) {
+ $count++ if $line =~ m/^UID/;
+ }
+ return $count;
+}
+
+sub ceil {
+ return int($_[0]) + (int($_[0]) != $_[0]);
+}
+
+sub fold {
+ my $MAXLENGTH = 75;
+ my @A;
+ foreach my $string (@_) {
+ my @B = unpack("A$MAXLENGTH" x (&ceil(length($string)/$MAXLENGTH)), $string);
+ push @A, $B[0], map { ' '.$_ } @B[1..$#B];
+ }
+ return @A;
+}
+
+sub STORE {
+ my $self = shift;
+ my $uid = shift;
+ my $c = shift;
+
+ die "event must be array!\n" if ref $c ne 'ARRAY';
+
+ $self->DELETE($uid);
+
+ push @{$self->{A}}, fold($self->toiCal($uid, $c));
+}
+
+sub DELETE {
+ my $self = shift;
+ my $uid = shift;
+
+ my $index = $self->seekUid($uid);
+
+ return defined $index ? $self->removeComponent($index) : 0;
+}
+
+sub CLEAR {
+ my $self = shift;
+
+ @{$self->{A}} = ();
+}
+
+sub DESTROY {
+ my $self = shift;
+ untie $self->{A};
+}
+
+sub debug {
+ my $self = shift;
+ print(STDERR shift, "\n") if $self->{debug};
+}
+
+sub unfold {
+ my $self = shift;
+ my $index = shift;
+
+ my $result = ${$self->{A}}[$index];
+ my $i = 1;
+ until (${$self->{A}}[$index + $i] !~ /^ (.*)$/s) {
+ $result .= $1;
+ $i++;
+ }
+ $self->debug("unfolded index $index to $result");
+ return $result;
+}
+
+sub seekUid {
+ my $self = shift;
+ my $uid = shift;
+
+ my $index;
+
+ # check cache
+ #
+ if (exists $self->{C}->{$uid}) {
+ $self->debug("found cached index for $uid, checking..");
+ $index = $self->{C}->{$uid};
+ if ($self->unfold($index) =~ /^UID.*:(.*)$/) {
+ if ($1 eq $uid) {
+ $self->debug("found key $uid in cache");
+ return $index;
+ } else {
+ $self->debug("could not find key $uid in cache, deleting");
+ delete $self->{C}->{$uid};
+ }
+ } else {
+ warn("seekUid: discovered illegal UID property format, should be like UID;...:..., ignoring for now\n");
+ }
+ }
+
+ # not in cache then lets search the file
+ #
+ $index = 0;
+ for my $line (@{$self->{A}}) {
+ if ($line =~ m/^UID/) {
+ if ($self->unfold($index) =~ /^UID.*:(.*)$/) {
+ $self->{C}->{$1} = $index; # cache in any case
+ if ($1 eq $uid) {
+ $self->debug("found key $uid");
+ return $index;
+ }
+ } else {
+ warn("discovered illegal UID property format, should be like UID;...:..., ignoring for now\n");
+ }
+ }
+ $index++;
+ }
+
+ # doesn't exist!
+ #
+ return undef;
+}
+
+sub removeComponent {
+ my $self = shift;
+ my $index = shift;
+
+ my $i;
+ $i = 0; $i++ until ${$self->{A}}[$index - $i] =~ /^BEGIN:(\w+)$/; my $si = $index - $i;
+ my $component = $1;
+ $i = 0; $i++ until ${$self->{A}}[$index + $i] =~ /^END:$component/; my $fi = $index + $i;
+ $self->debug("component $component found between [$si, $fi]");
+
+ splice @{$self->{A}}, $si, $fi - $si + 1;
+}
+
+=head1 How Tie::iCal interprets iCal files
+
+Tie::iCal interprets files by mapping iCal components into Perl hash keys and
+iCal content lines into various Perl arrays and hashes.
+
+=head2 Components
+
+An iCal component such as VEVENT, VTODO or VJOURNAL maps to a hash key:-
+
+ BEGIN:VEVENT
+ UID:a_unique_uid
+ NAME1:VALUE1
+ ..
+ END:VEVENT
+
+corresponds to
+
+ $events{'a_unique_uid'} = ['VEVENT', {'NAME1' => 'VALUE1'}]
+
+=head2 Subcomponents
+
+An iCal subcomponent such as VALARM maps to a list of hash keys:-
+
+ BEGIN:VALARM
+ TRIGGER;VALUE=DURATION:-PT1S
+ TRIGGER;VALUE=DURATION:-PT1S
+ END:VALARM
+ BEGIN:VALARM
+ X-TIE-ICAL;VALUE=ANOTHER:HERE
+ X-TIE-ICAL:HERE2
+ X-TIE-ICAL-NAME:HERE2
+ END:VALARM
+
+corresponds to
+
+ 'VALARM' => [
+ {
+ 'TRIGGER' => [
+ [{'VALUE' => 'DURATION'},'-PT1S'],
+ [{'VALUE' => 'DURATION'},'-PT1S']
+ ]
+ },
+ {
+ 'X-TIE-ICAL' => [
+ [{'VALUE' => 'ANOTHER'},'HERE'],
+ ['HERE2']
+ ],
+ 'X-TIE-ICAL-NAME' => 'HERE2'
+ }
+ ]
+
+To see how individual content lines are formed see below.
+
+=head2 Content Lines
+
+Once unfolded, a content line may look like:-
+
+ NAME;PARAM1=PVAL1;PARAM2=PVAL2;...:VALUE1,VALUE2,...
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => [{'PARAM1'=>'PVAL1', 'PARAM2'=>'PVAL2', ..}, 'VALUE1', 'VALUE2', ..]
+
+or
+
+ NAME:VALUE1,VALUE2,...
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => ['VALUE1', 'VALUE2', ..]
+
+or
+
+ NAME:VALUE
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => 'VALUE'
+
+Multiple contentlines with same name, i.e. FREEBUSY, ATTENDEE:-
+
+ NAME;PARAM10=PVAL10;PARAM20=PVAL20;...:VALUE10,VALUE20,...
+ NAME;PARAM11=PVAL11;PARAM21=PVAL21;...:VALUE11,VALUE21,...
+ ...
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => [
+ [{'PARAM10'=>'PVAL10', 'PARAM20'=>'PVAL20', ..}, 'VALUE10', 'VALUE20', ..],
+ [{'PARAM11'=>'PVAL11', 'PARAM21'=>'PVAL21', ..}, 'VALUE11', 'VALUE21', ..],
+ ...
+ ]
+
+or
+
+ NAME:VALUE10,VALUE20,...
+ NAME:VALUE11,VALUE21,...
+ ...
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => [
+ ['VALUE10', 'VALUE20', ..],
+ ['VALUE11', 'VALUE21', ..],
+ ...
+ ]
+
+or in a mixed form, i.e.
+
+ NAME:VALUE10,VALUE20,...
+ NAME;PARAM11=PVAL11;PARAM21=PVAL21:VALUE11,VALUE21,...
+ NAME:VALUE12,VALUE22,...
+ ...
+
+having an equivalent perl data structure like: -
+
+ 'NAME' => [
+ ['VALUE10', 'VALUE20', ..],
+ [{'PARAM11'=>'PVAL11', 'PARAM21'=>'PVAL21', ..}, 'VALUE11', 'VALUE21', ..],
+ ['VALUE12', 'VALUE22', ..],
+ ...
+ ]
+
+=cut
+
+sub toiCal {
+ my $self = shift;
+ my $uid = shift;
+ my $c = shift;
+ my $excludeComponent = shift;
+
+ my @lines;
+ my ($component, $e) = $excludeComponent ? (undef, $c) : @$c;
+ push @lines, "BEGIN:VCALENDAR", "VERSION:2.0", "PRODID:-//Numen Inest/NONSGML Tie::iCal $VERSION//EN", "BEGIN:$component", "UID:$uid" if ! $excludeComponent;
+ foreach my $name (keys %$e) {
+ if ($name eq 'RRULE') {
+ if (ref($$e{$name}) ne 'HASH') {
+ warn "RRULE property should be expressed as a hash, ignoring..\n";
+ } else {
+ my @rrule;
+ foreach my $k (keys %{$$e{$name}}) {
+ push @rrule, ref(${$$e{$name}}{$k}) eq 'ARRAY' ? "$k=".join(',', @{${$$e{$name}}{$k}}) : "$k=".${$$e{$name}}{$k};
+ }
+ push @lines, "$name:".join(';', at rrule);
+ }
+ } elsif (ref(\$$e{$name}) eq 'SCALAR') {
+ push @lines, "$name:$$e{$name}";
+ } elsif (ref($$e{$name}) eq 'ARRAY') {
+ if (@{$$e{$name}} && !grep({ref($_) ne 'HASH'} @{$$e{$name}})) { # strict list of hashes => we have a subcomponent
+ push @lines, "BEGIN:$name";
+ foreach my $sc (@{$$e{$name}}) {
+ push @lines, $self->toiCal(undef, $sc, 1);
+ }
+ push @lines, "END:$name";
+ } elsif (@{$$e{$name}} && !grep({ref($_) ne 'ARRAY'} @{$$e{$name}})) { # strict list of arrays => we have several content lines
+ foreach my $cl (@{$$e{$name}}) {
+ if (ref(${$cl}[0]) eq 'HASH') { # we have params
+ my ($params, @values) = @{$cl};
+ push @lines, "$name;".join(";", map { "$_=$$params{$_}" } keys(%$params)).":".join(',', at values);
+ } else { # we only have values
+ push @lines, "$name:".join(',',@{$cl});
+ }
+ }
+ } else {
+ my ($params, @values) = @{$$e{$name}};
+ push @lines, "$name;".join(";", map { "$_=$$params{$_}" } keys(%$params)).":".join(',', at values);
+ }
+ } else {
+ warn "ignoring unimplemented ",ref(\${$e}{$name})," -> ",$name."\n";
+ }
+ }
+ push @lines, "END:$component", "END:VCALENDAR" if ! $excludeComponent;
+
+ return @lines;
+}
+
+# taken from Text::ParseWords without single quote as quote char
+# and keep flag
+#
+sub parse_line {
+ # We will be testing undef strings
+ no warnings;
+ use re 'taint'; # if it's tainted, leave it as such
+
+ my($delimiter, $line) = @_;
+ my($word, @pieces);
+
+ while (length($line)) {
+ $line =~ s/^(["]) # a $quote
+ ((?:\\.|(?!\1)[^\\])*) # and $quoted text
+ \1 # followed by the same quote
+ | # --OR--
+ ^((?:\\.|[^\\"])*?) # an $unquoted text
+ (\Z(?!\n)|(?-x:$delimiter)|(?!^)(?=["]))
+ # plus EOL, delimiter, or quote
+ //xs or return; # extended layout
+ my($quote, $quoted, $unquoted, $delim) = ($1, $2, $3, $4);
+ return() unless( defined($quote) || length($unquoted) || length($delim));
+
+ $quoted = "$quote$quoted$quote";
+ $word .= defined $quote ? $quoted : $unquoted;
+
+ if (length($delim)) {
+ push(@pieces, $word);
+ undef $word;
+ }
+ if (!length($line)) {
+ push(@pieces, $word);
+ }
+ }
+ return(@pieces);
+}
+
+sub toHash {
+ my $self = shift;
+ my $index = shift;
+ my $excludeComponent = shift;
+
+ my $i;
+ $i = 0; $i++ until ${$self->{A}}[$index - $i] =~ /^BEGIN:(\w+)$/; my $si = $index - $i;
+ my $component = $1;
+ $i = 0; $i++ until ${$self->{A}}[$index + $i] =~ /^END:$component/; my $fi = $index + $i;
+ $self->debug("component $component found between [$si, $fi]");
+
+ my %e;
+ my $subComponent = '';
+ for my $i ($si+1..$fi-1) {
+ next if ${$self->{A}}[$i] =~ m/^UID/;
+ if (${$self->{A}}[$i] =~ m/^\w+/) {
+ my $contentLine = $self->unfold($i);
+ if ($subComponent ne '') { # we are in a subcomponent
+ $subComponent = '' if $contentLine =~ /^END:$subComponent$/;
+ next;
+ } elsif ($contentLine =~ /^BEGIN:(\w+)$/) { # we have found a subcomponent
+ $subComponent = $1;
+ push @{$e{$subComponent}}, $self->toHash($i, 1);
+ } elsif ($contentLine =~ /^[\w-]+;.*$/s) { # we have params
+ my ($nameAndParamString, @valueFragments) = &parse_line(':', $contentLine);
+ my @values = &parse_line(',', join(':', @valueFragments));
+ my ($name, @params) = &parse_line(';', $nameAndParamString);
+ my %params = map { my ($p, $v) = split(/=/, $_); $p => $v } @params;
+ if (exists $e{$name}) {
+ if (!(@{$e{$name}} && !grep({ref($_) ne 'ARRAY'} @{$e{$name}}))) { # not a strict list of arrays
+ $self->debug("found singleton data, converting to list..");
+ $e{$name} = [$e{$name}, [{%params}, @values]];
+ } else {
+ push @{$e{$name}}, [{%params}, @values];
+ }
+ } else {
+ $e{$name} = [{%params}, @values];
+ }
+ } elsif ($contentLine =~ /^[\w-]+:.*$/s) { # we don't have params
+ my ($name, @valueFragments) = &parse_line(':', $contentLine);
+ my @values;
+ if ($name eq 'RRULE') {
+ my @params = &parse_line(';', join(':', @valueFragments));
+ my %params = map { my ($p, $v) = split(/=/, $_); $p => $v =~ /,/ ? [split(/,/,$v)] : $v } @params;
+ push @values, {%params};
+ } else {
+ @values = &parse_line(',', join(':', @valueFragments));
+ }
+ if (exists $e{$name}) {
+ if (!(@{$e{$name}} && !grep({ref($_) ne 'ARRAY'} @{$e{$name}}))) { # not a strict list of arrays
+ $self->debug("found singleton data, converting to list..");
+ $e{$name} = [$e{$name}, [@values]];
+ } else {
+ push @{$e{$name}}, [@values];
+ }
+ } else {
+ $e{$name} = @values == 1 ? $values[0] : [@values];
+ }
+ } else { # what do we have?
+ warn("discovered illegal property format, should be like NAME;...:..., ignoring for now\n");
+ }
+ }
+ }
+
+ return $excludeComponent ? \%e : [$component, \%e] ;
+}
+
+=head1 BUGS
+
+Property names are assumed not to be folded, i.e.
+
+ DESCR
+ IPTION:blah blah..
+
+RRULE property does not support parameters.
+
+Property names that begin with UID can potentially confuse this module.
+
+Subcomponents such as VALARM must exist after any UID property.
+
+Deleting events individually may leave non-RFC2445 compliant empty VCALENDAR objects.
+
+=head1 AUTHOR
+
+Blair Sutton, <mailto:bsdz at cpan.org>, L<http://www.numeninest.com/>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2005 Blair Sutton. All rights reserved.
+This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<perl>, L<Tie::File>, L<Date::ICal>
+
+=cut
+
+1;
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/lib/Tie/iCal.pm
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/samples/demo.ics
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/samples/demo.ics 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/samples/demo.ics 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,1155 @@
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :413dd998-67d6-11d9-9a33-e4a59cf11a95
+SUMMARY
+ :my event
+DESCRIPTION
+ :my note
+LOCATION
+ :my location
+URL
+ :http://myurl.com
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X
+ ;MEMBER=AlarmEmailAddress
+ :me at myaddress
+RRULE
+ :FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,WE,TH
+EXDATE
+ :20050118T000000
+DTSTART
+ :20050118T160000Z
+DTEND
+ :20050118T170000Z
+DTSTAMP
+ :20050116T154856Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :927172676
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20020826
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :1ce81410-4769-11d9-8693-ee0b0a9128b1
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041228
+DTEND
+ ;VALUE=DATE
+ :20041229
+DTSTAMP
+ :20041206T092748Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :2285be0e-4769-11d9-9032-fb135edc90b2
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041227
+DTEND
+ ;VALUE=DATE
+ :20041228
+DTSTAMP
+ :20041206T092802Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :3be6a610-4769-11d9-bf60-e015b2923205
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050325
+DTEND
+ ;VALUE=DATE
+ :20050326
+DTSTAMP
+ :20041206T092845Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :42faa140-4769-11d9-8181-bcd3c0ece72d
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050328
+DTEND
+ ;VALUE=DATE
+ :20050329
+DTSTAMP
+ :20041206T092857Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :496a1a2e-4769-11d9-8b9e-9a84f95c649f
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050502
+DTEND
+ ;VALUE=DATE
+ :20050503
+DTSTAMP
+ :20041206T092907Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :4f246064-4769-11d9-add5-c041a1ed7968
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050530
+DTEND
+ ;VALUE=DATE
+ :20050531
+DTSTAMP
+ :20041206T092917Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :56208410-4769-11d9-840a-ff72353214de
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050829
+DTEND
+ ;VALUE=DATE
+ :20050830
+DTSTAMP
+ :20041206T092929Z
+LAST-MODIFIED
+ :20041206T092938Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :6389be50-4769-11d9-b537-96d51d02ab76
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051227
+DTEND
+ ;VALUE=DATE
+ :20051228
+DTSTAMP
+ :20041206T092951Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :698ded6c-4769-11d9-9e35-8764b0ff2b8e
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051226
+DTEND
+ ;VALUE=DATE
+ :20051227
+DTSTAMP
+ :20041206T093001Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7323412e-4769-11d9-8f2d-c469be04ddf5
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060102
+DTEND
+ ;VALUE=DATE
+ :20060103
+DTSTAMP
+ :20041206T093018Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7ff3e4ee-4769-11d9-b1d4-e2dcd6159dd0
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060414
+DTEND
+ ;VALUE=DATE
+ :20060415
+DTSTAMP
+ :20041206T093038Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :85c3a04e-4769-11d9-8af7-cda5e3e98ebe
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060417
+DTEND
+ ;VALUE=DATE
+ :20060418
+DTSTAMP
+ :20041206T093047Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :8c18df5e-4769-11d9-ac09-e97dffd65595
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060501
+DTEND
+ ;VALUE=DATE
+ :20060502
+DTSTAMP
+ :20041206T093101Z
+LAST-MODIFIED
+ :20041206T093108Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :958a6fda-4769-11d9-88db-e91b56d7b8f8
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060529
+DTEND
+ ;VALUE=DATE
+ :20060530
+DTSTAMP
+ :20041206T093113Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :9f39fd7a-4769-11d9-a665-99a1ee535d36
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060828
+DTEND
+ ;VALUE=DATE
+ :20060829
+DTSTAMP
+ :20041206T093129Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :a6b9427c-4769-11d9-964c-e7e2f4c2006a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061225
+DTEND
+ ;VALUE=DATE
+ :20061226
+DTSTAMP
+ :20041206T093144Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ab98305a-4769-11d9-b056-be29252508db
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061226
+DTEND
+ ;VALUE=DATE
+ :20061227
+DTSTAMP
+ :20041206T093151Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :b36fac5e-4769-11d9-9833-cbe45ff8e08b
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070101
+DTEND
+ ;VALUE=DATE
+ :20070102
+DTSTAMP
+ :20041206T093204Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ba1d2270-4769-11d9-bc2f-f524346ae56f
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070406
+DTEND
+ ;VALUE=DATE
+ :20070407
+DTSTAMP
+ :20041206T093217Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :bf0cc0c4-4769-11d9-bd28-8ce79732df58
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070409
+DTEND
+ ;VALUE=DATE
+ :20070410
+DTSTAMP
+ :20041206T093225Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :c70f271c-4769-11d9-85d5-eeae49afa7c8
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070507
+DTEND
+ ;VALUE=DATE
+ :20070508
+DTSTAMP
+ :20041206T093238Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :cd6b8d3a-4769-11d9-8ec2-b2672c137a80
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070528
+DTEND
+ ;VALUE=DATE
+ :20070529
+DTSTAMP
+ :20041206T093248Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :d5de0218-4769-11d9-8ab6-fc42c8cf7511
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070827
+DTEND
+ ;VALUE=DATE
+ :20070828
+DTSTAMP
+ :20041206T093303Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e2435c06-4769-11d9-8189-85efc4fcc75a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071225
+DTEND
+ ;VALUE=DATE
+ :20071226
+DTSTAMP
+ :20041206T093325Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e6b9626c-4769-11d9-9636-b4b242071a07
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071226
+DTEND
+ ;VALUE=DATE
+ :20071227
+DTSTAMP
+ :20041206T093331Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eed602a2-4769-11d9-9c29-87e14bef7e97
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20080101
+DTEND
+ ;VALUE=DATE
+ :20080102
+DTSTAMP
+ :20041206T093345Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :de525990-4768-11d9-b210-dbb23e96122f
+SUMMARY
+ :New Year's day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040101
+DTEND
+ ;VALUE=DATE
+ :20040102
+DTSTAMP
+ :20041206T092559Z
+LAST-MODIFIED
+ :20041207T102901Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eaabc7bc-4768-11d9-a9f0-d813f0b4250b
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040409
+DTEND
+ ;VALUE=DATE
+ :20040410
+DTSTAMP
+ :20041206T092625Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :f3741142-4768-11d9-90f2-b75bdc777a72
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040412
+DTEND
+ ;VALUE=DATE
+ :20040413
+DTSTAMP
+ :20041206T092637Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ffac1e82-4768-11d9-af34-c8169769d183
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040503
+DTEND
+ ;VALUE=DATE
+ :20040504
+DTSTAMP
+ :20041206T092702Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :06af693c-4769-11d9-88da-f9a496177710
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040531
+DTEND
+ ;VALUE=DATE
+ :20040601
+DTSTAMP
+ :20041206T092714Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :0fcfe9c4-4769-11d9-b1de-afc927cc7b57
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040830
+DTEND
+ ;VALUE=DATE
+ :20040831
+DTSTAMP
+ :20041206T092731Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :359d52c2-4769-11d9-9cd3-fde74dbfad50
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20050103T010338
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050103
+DTEND
+ ;VALUE=DATE
+ :20050104
+DTSTAMP
+ :20041206T092833Z
+LAST-MODIFIED
+ :20050103T010338Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :971445858
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :925921922
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :936923338
+SUMMARY
+ :New Year's Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030101
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :962980365
+SUMMARY
+ :Good Friday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030418
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :909072250
+SUMMARY
+ :Easter Monday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030421
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :940352282
+SUMMARY
+ :May Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030505
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :975821516
+SUMMARY
+ :Spring Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030526
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :902762343
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030825
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :956630271
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :911737808
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+ORGANIZER:Mailto:B at example.com
+ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D at example.com
+ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big at example.com
+ATTENDEE:conf_Big1 at example.com
+ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E at example.com
+DTSTAMP:19970611T190000Z
+DTSTART:19970701T190000Z
+DTEND:19970701T193000Z
+SUMMARY:Conference
+UID:calsrv.example.com-873970198738777 at example.com
+SEQUENCE:1
+STATUS:CONFIRMED
+END:VEVENT
+END:VCALENDAR
Property changes on: packages/libtie-ical-perl/branches/upstream/current/samples/demo.ics
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/samples/demo.pl
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/samples/demo.pl 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/samples/demo.pl 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,87 @@
+use Tie::iCal;
+use Data::Dumper;
+
+print "TIEHASH test..";
+tie %events, 'Tie::iCal', "./demo.ics", 'debug' => 0 or die "Failed to tie file!\n";
+print "ok\n";
+
+print "FETCH test..\n";
+print Dumper($events{'413dd998-67d6-11d9-9a33-e4a59cf11a95'});
+
+print "FETCH cache test..\n";
+print Dumper($events{'413dd998-67d6-11d9-9a33-e4a59cf11a95'});
+
+print "EXISTS test..\n";
+if (exists $events{'calsrv.example.com-873970198738777 at example.com'}) {
+ print "Found key 'calsrv.example.com-873970198738777\@example.com', printing it..\n";
+ print Dumper($events{'calsrv.example.com-873970198738777 at example.com'})."\n";
+}
+if (!exists $events{'this_UID_does_not_exist'}) {
+ print "Did not find non-existant key\n";
+}
+
+print "FIRSTKEY test..\n";
+print each(%events)."\n";
+
+print "NEXTKEY test..\n";
+#~ print "list keys..\n";
+#~ foreach (keys %events) { print $_."\n" }
+#~ print "list values..\n";
+#~ foreach (values %events) { print Dumper($_)."\n" }
+
+while (($key, $value) = each %events) { print $key, "\n" }
+
+print "COUNT test..\n";
+print scalar(%events)."\n";
+
+print "DELETE test..\n";
+use File::Copy;
+copy("./demo.ics","./democopy.ics");
+tie %eventscopy, 'Tie::iCal', "./democopy.ics", 'debug' => 1 or die "Failed to tie file!\n";
+delete $eventscopy{'1ce81410-4769-11d9-8693-ee0b0a9128b1'};
+if (!exists $events{'1ce81410-4769-11d9-8693-ee0b0a9128b1'}) {
+ print "Did not find deleted key\n";
+}
+
+print "STORE test..\n";
+$eventscopy{"A-UNIQUE-ID"} = [
+ 'VEVENT',
+ {
+ 'URL' => 'http//myurl.com',
+ 'SUMMARY' => 'my event',
+ 'CLASS' => 'PRIVATE',
+ 'LOCATION' => 'my location',
+ 'X' => [{'MEMBER' => 'AlarmEmailAddress'}, 'me at myaddress'],
+ 'STATUS' => 'TENTATIVE',
+ 'DTSTAMP' => '20050116T154856Z',
+ 'DTEND' => '20050118T170000Z',
+ 'VALARM' => [
+ {
+ 'TRIGGER' => [{'VALUE' => 'DURATION'}, '-PT1S']
+ }
+ ],
+ 'DESCRIPTION' => 'my note',
+ 'X-MOZILLA-ALARM-DEFAULT-LENGTH' => '0',
+ 'RRULE' => {
+ 'FREQ' => 'WEEKLY',
+ 'BYDAY' => [
+ 'TU',
+ 'WE',
+ 'TH'
+ ],
+ 'INTERVAL' => '1'
+ },
+ 'EXDATE' => '20050118T000000',
+ 'DTSTART' => '20050118T160000Z',
+ 'ATTENDEE' => [
+ [{'CN' => 'BIG A','ROLE' => 'CHAIR','PARTSTAT' => 'ACCEPTED'},'MailtoA at example.com'],
+ [{'CN' => 'B','RSVP' => 'TRUE','CUTYPE' => 'INDIVIDUAL'},'MailtoB at example.com'],
+ ['MailtoB at example.com']
+ ]
+ }
+];
+
+print "hit Enter to test CLEAR..\n";
+getc(STDIN);
+print "CLEAR test..\n";
+%eventscopy = ();
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/samples/demo.pl
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/samples/uniquify.pl
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/samples/uniquify.pl 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/samples/uniquify.pl 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,74 @@
+use Tie::iCal;
+
+unlink "unique.ics", "nonunique.ics";
+open ICS, ">nonunique.ics";
+while (<main::DATA>) { print ICS $_ }
+close ICS;
+
+tie %events, 'Tie::iCal', "nonunique.ics", 'debug' => 0 or die "Failed to tie file!\n";
+tie %newevents, 'Tie::iCal', "unique.ics", 'debug' => 0 or die "Failed to tie file!\n";
+
+print STDERR "Converting nonunique.ics to unique.ics..\n";
+while (($uid, $event) = each %events) {
+ my $newuid = createUniqueID(\%events);
+ print STDERR "Converting old key $uid to new key $newuid..\n";
+ $newevents{$newuid} = $event;
+}
+print STDERR "done\n";
+
+untie %events;
+untie %newevents;
+exit;
+
+# modified mozilla recipe
+#
+sub createUniqueID {
+ my $href = shift;
+ my $newID = "";
+ while ($newID eq "" || exists $$href{$newID}) {
+ $newID = int(900000000 + rand(100000000));
+ }
+ return $newID;
+}
+
+__END__
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:-//Numen Inest/NONSGML Tie::iCal 0.11//EN
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+BEGIN:VEVENT
+UID:9999
+SUMMARY:My Event
+DTSTART;VALUE=DATE:20031225
+DTEND;VALUE=DATE:20031226
+END:VEVENT
+END:VCALENDAR
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/samples/uniquify.pl
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/t/a_use.t
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/t/a_use.t 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/t/a_use.t 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,8 @@
+#!/usr/bin/env perl -w
+use strict;
+use Test;
+BEGIN { plan tests => 1 }
+
+use Tie::iCal; ok(1);
+exit;
+__END__
Property changes on: packages/libtie-ical-perl/branches/upstream/current/t/a_use.t
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/t/b_tie.t
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/t/b_tie.t 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/t/b_tie.t 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,1248 @@
+#!/usr/bin/env perl -w
+use strict;
+use Test;
+BEGIN { plan tests => 14 }
+
+open ICS, ">test.ics";
+while (<main::DATA>) { print ICS $_ }
+close ICS;
+
+use Tie::iCal;
+
+# TIEHASH
+ok(tie my %events, 'Tie::iCal', "test.ics", 'debug' => 0);
+
+# FETCH
+my ($comp, $hash) = @{$events{'413dd998-67d6-11d9-9a33-e4a59cf11a95'}};
+ok($comp eq 'VEVENT');
+ok(${$hash}{'SUMMARY'} eq 'my event');
+
+# FETCH cache
+my ($comp1, $hash1) = @{$events{'413dd998-67d6-11d9-9a33-e4a59cf11a95'}};
+ok($comp1 eq 'VEVENT');
+ok(${$hash1}{'SUMMARY'} eq 'my event');
+
+# EXISTS
+ok(exists $events{'calsrv.example.com-873970198738777 at example.com'});
+ok(!exists $events{'this_UID_does_not_exist'});
+
+# FIRSTKEY
+ok(each(%events) eq '413dd998-67d6-11d9-9a33-e4a59cf11a95');
+
+# NEXTKEY
+my $count = 0;
+while (my ($key, $value) = each %events) { $count++; }
+ok($count == 45);
+
+# COUNT
+ok(scalar(%events) == 46);
+
+# DELETE
+delete $events{'1ce81410-4769-11d9-8693-ee0b0a9128b1'};
+ok(!exists $events{'1ce81410-4769-11d9-8693-ee0b0a9128b1'});
+
+# STORE
+$events{'A-UNIQUE-ID'} = [
+ 'VEVENT',
+ {
+ 'URL' => 'http//myurl.com',
+ 'SUMMARY' => 'my event',
+ 'CLASS' => 'PRIVATE',
+ 'LOCATION' => 'my location',
+ 'X' => [{'MEMBER' => 'AlarmEmailAddress'}, 'me at myaddress'],
+ 'STATUS' => 'TENTATIVE',
+ 'DTSTAMP' => '20050116T154856Z',
+ 'DTEND' => '20050118T170000Z',
+ 'VALARM' => [
+ {
+ 'TRIGGER' => [{'VALUE' => 'DURATION'}, '-PT1S']
+ }
+ ],
+ 'DESCRIPTION' => 'my note',
+ 'X-MOZILLA-ALARM-DEFAULT-LENGTH' => '0',
+ 'RRULE' => {
+ 'FREQ' => 'WEEKLY',
+ 'BYDAY' => [
+ 'TU',
+ 'WE',
+ 'TH'
+ ],
+ 'INTERVAL' => '1'
+ },
+ 'EXDATE' => '20050118T000000',
+ 'DTSTART' => '20050118T160000Z',
+ 'ATTENDEE' => [
+ [{'CN' => 'BIG A','ROLE' => 'CHAIR','PARTSTAT' => 'ACCEPTED'},'MailtoA at example.com'],
+ [{'CN' => 'B','RSVP' => 'TRUE','CUTYPE' => 'INDIVIDUAL'},'MailtoB at example.com'],
+ ['MailtoB at example.com']
+ ]
+ }
+];
+my ($comp2, $hash2) = @{$events{'A-UNIQUE-ID'}};
+ok($comp2 eq 'VEVENT');
+ok(${$hash2}{'LOCATION'} eq 'my location');
+
+# CLEAR
+%events = ();
+ok(-z 'test.ics');
+
+untie %events;
+unlink 'test.ics';
+exit;
+
+__END__
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :413dd998-67d6-11d9-9a33-e4a59cf11a95
+SUMMARY
+ :my event
+DESCRIPTION
+ :my note
+LOCATION
+ :my location
+URL
+ :http://myurl.com
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X
+ ;MEMBER=AlarmEmailAddress
+ :me at myaddress
+RRULE
+ :FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,WE,TH
+EXDATE
+ :20050118T000000
+DTSTART
+ :20050118T160000Z
+DTEND
+ :20050118T170000Z
+DTSTAMP
+ :20050116T154856Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :927172676
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20020826
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :1ce81410-4769-11d9-8693-ee0b0a9128b1
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041228
+DTEND
+ ;VALUE=DATE
+ :20041229
+DTSTAMP
+ :20041206T092748Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :2285be0e-4769-11d9-9032-fb135edc90b2
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041227
+DTEND
+ ;VALUE=DATE
+ :20041228
+DTSTAMP
+ :20041206T092802Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :3be6a610-4769-11d9-bf60-e015b2923205
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050325
+DTEND
+ ;VALUE=DATE
+ :20050326
+DTSTAMP
+ :20041206T092845Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :42faa140-4769-11d9-8181-bcd3c0ece72d
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050328
+DTEND
+ ;VALUE=DATE
+ :20050329
+DTSTAMP
+ :20041206T092857Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :496a1a2e-4769-11d9-8b9e-9a84f95c649f
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050502
+DTEND
+ ;VALUE=DATE
+ :20050503
+DTSTAMP
+ :20041206T092907Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :4f246064-4769-11d9-add5-c041a1ed7968
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050530
+DTEND
+ ;VALUE=DATE
+ :20050531
+DTSTAMP
+ :20041206T092917Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :56208410-4769-11d9-840a-ff72353214de
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050829
+DTEND
+ ;VALUE=DATE
+ :20050830
+DTSTAMP
+ :20041206T092929Z
+LAST-MODIFIED
+ :20041206T092938Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :6389be50-4769-11d9-b537-96d51d02ab76
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051227
+DTEND
+ ;VALUE=DATE
+ :20051228
+DTSTAMP
+ :20041206T092951Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :698ded6c-4769-11d9-9e35-8764b0ff2b8e
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051226
+DTEND
+ ;VALUE=DATE
+ :20051227
+DTSTAMP
+ :20041206T093001Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7323412e-4769-11d9-8f2d-c469be04ddf5
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060102
+DTEND
+ ;VALUE=DATE
+ :20060103
+DTSTAMP
+ :20041206T093018Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7ff3e4ee-4769-11d9-b1d4-e2dcd6159dd0
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060414
+DTEND
+ ;VALUE=DATE
+ :20060415
+DTSTAMP
+ :20041206T093038Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :85c3a04e-4769-11d9-8af7-cda5e3e98ebe
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060417
+DTEND
+ ;VALUE=DATE
+ :20060418
+DTSTAMP
+ :20041206T093047Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :8c18df5e-4769-11d9-ac09-e97dffd65595
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060501
+DTEND
+ ;VALUE=DATE
+ :20060502
+DTSTAMP
+ :20041206T093101Z
+LAST-MODIFIED
+ :20041206T093108Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :958a6fda-4769-11d9-88db-e91b56d7b8f8
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060529
+DTEND
+ ;VALUE=DATE
+ :20060530
+DTSTAMP
+ :20041206T093113Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :9f39fd7a-4769-11d9-a665-99a1ee535d36
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060828
+DTEND
+ ;VALUE=DATE
+ :20060829
+DTSTAMP
+ :20041206T093129Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :a6b9427c-4769-11d9-964c-e7e2f4c2006a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061225
+DTEND
+ ;VALUE=DATE
+ :20061226
+DTSTAMP
+ :20041206T093144Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ab98305a-4769-11d9-b056-be29252508db
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061226
+DTEND
+ ;VALUE=DATE
+ :20061227
+DTSTAMP
+ :20041206T093151Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :b36fac5e-4769-11d9-9833-cbe45ff8e08b
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070101
+DTEND
+ ;VALUE=DATE
+ :20070102
+DTSTAMP
+ :20041206T093204Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ba1d2270-4769-11d9-bc2f-f524346ae56f
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070406
+DTEND
+ ;VALUE=DATE
+ :20070407
+DTSTAMP
+ :20041206T093217Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :bf0cc0c4-4769-11d9-bd28-8ce79732df58
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070409
+DTEND
+ ;VALUE=DATE
+ :20070410
+DTSTAMP
+ :20041206T093225Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :c70f271c-4769-11d9-85d5-eeae49afa7c8
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070507
+DTEND
+ ;VALUE=DATE
+ :20070508
+DTSTAMP
+ :20041206T093238Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :cd6b8d3a-4769-11d9-8ec2-b2672c137a80
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070528
+DTEND
+ ;VALUE=DATE
+ :20070529
+DTSTAMP
+ :20041206T093248Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :d5de0218-4769-11d9-8ab6-fc42c8cf7511
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070827
+DTEND
+ ;VALUE=DATE
+ :20070828
+DTSTAMP
+ :20041206T093303Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e2435c06-4769-11d9-8189-85efc4fcc75a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071225
+DTEND
+ ;VALUE=DATE
+ :20071226
+DTSTAMP
+ :20041206T093325Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e6b9626c-4769-11d9-9636-b4b242071a07
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071226
+DTEND
+ ;VALUE=DATE
+ :20071227
+DTSTAMP
+ :20041206T093331Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eed602a2-4769-11d9-9c29-87e14bef7e97
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20080101
+DTEND
+ ;VALUE=DATE
+ :20080102
+DTSTAMP
+ :20041206T093345Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :de525990-4768-11d9-b210-dbb23e96122f
+SUMMARY
+ :New Year's day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040101
+DTEND
+ ;VALUE=DATE
+ :20040102
+DTSTAMP
+ :20041206T092559Z
+LAST-MODIFIED
+ :20041207T102901Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eaabc7bc-4768-11d9-a9f0-d813f0b4250b
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040409
+DTEND
+ ;VALUE=DATE
+ :20040410
+DTSTAMP
+ :20041206T092625Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :f3741142-4768-11d9-90f2-b75bdc777a72
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040412
+DTEND
+ ;VALUE=DATE
+ :20040413
+DTSTAMP
+ :20041206T092637Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ffac1e82-4768-11d9-af34-c8169769d183
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040503
+DTEND
+ ;VALUE=DATE
+ :20040504
+DTSTAMP
+ :20041206T092702Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :06af693c-4769-11d9-88da-f9a496177710
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040531
+DTEND
+ ;VALUE=DATE
+ :20040601
+DTSTAMP
+ :20041206T092714Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :0fcfe9c4-4769-11d9-b1de-afc927cc7b57
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040830
+DTEND
+ ;VALUE=DATE
+ :20040831
+DTSTAMP
+ :20041206T092731Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :359d52c2-4769-11d9-9cd3-fde74dbfad50
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20050103T010338
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050103
+DTEND
+ ;VALUE=DATE
+ :20050104
+DTSTAMP
+ :20041206T092833Z
+LAST-MODIFIED
+ :20050103T010338Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :971445858
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :925921922
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :936923338
+SUMMARY
+ :New Year's Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030101
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :962980365
+SUMMARY
+ :Good Friday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030418
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :909072250
+SUMMARY
+ :Easter Monday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030421
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :940352282
+SUMMARY
+ :May Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030505
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :975821516
+SUMMARY
+ :Spring Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030526
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :902762343
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030825
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :956630271
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :911737808
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+ORGANIZER:Mailto:B at example.com
+ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D at example.com
+ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big at example.com
+ATTENDEE:conf_Big1 at example.com
+ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E at example.com
+DTSTAMP:19970611T190000Z
+DTSTART:19970701T190000Z
+DTEND:19970701T193000Z
+SUMMARY:Conference
+UID:calsrv.example.com-873970198738777 at example.com
+SEQUENCE:1
+STATUS:CONFIRMED
+END:VEVENT
+END:VCALENDAR
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/t/b_tie.t
___________________________________________________________________
Name: svn:executable
+
Added: packages/libtie-ical-perl/branches/upstream/current/t/c_storefetch.t
===================================================================
--- packages/libtie-ical-perl/branches/upstream/current/t/c_storefetch.t 2006-04-09 13:07:12 UTC (rev 2531)
+++ packages/libtie-ical-perl/branches/upstream/current/t/c_storefetch.t 2006-04-09 13:38:36 UTC (rev 2532)
@@ -0,0 +1,1210 @@
+#!/usr/bin/env perl -w
+use strict;
+use Test;
+BEGIN { plan tests => 49 }
+
+open ICS, ">test1.ics";
+while (<main::DATA>) { print ICS $_ }
+close ICS;
+
+use Tie::iCal;
+
+# TIEHASH
+ok(tie my %events1, 'Tie::iCal', "test1.ics", 'debug' => 0);
+ok(tie my %events2, 'Tie::iCal', "test2.ics", 'debug' => 0);
+
+ok(scalar(%events1) == 46);
+
+while (my ($key, $value) = each %events1) {
+ $events2{$key} = $value;
+ ok(compare($events1{$key}, $events2{$key}));
+}
+
+untie %events1;
+untie %events2;
+unlink 'test1.ics';
+unlink 'test2.ics';
+
+exit;
+
+sub compare {
+ my ($a, $b) = @_;
+ return 0 if ref($a) ne ref($b);
+ if (ref($a) eq 'ARRAY') {
+ return 0 if $#$a != $#$b;
+ for my $i (0..$#$a) {
+ return 0 if !compare($$a[$i], $$b[$i]);
+ }
+ } elsif (ref($a) eq 'HASH') {
+ my @A = sort keys %$a;
+ my @B = sort keys %$b;
+ return 0 if $#A != $#B;
+ for my $j (0..$#A) {
+ return 0 if !compare($A[$j], $B[$j]);
+ return 0 if !compare($$a{$A[$j]}, $$b{$B[$j]});
+ }
+ } else {
+ return 0 if $a ne $b;
+ }
+ return 1;
+}
+
+__END__
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :413dd998-67d6-11d9-9a33-e4a59cf11a95
+SUMMARY
+ :my event
+DESCRIPTION
+ :my note
+LOCATION
+ :my location
+URL
+ :http://myurl.com
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X
+ ;MEMBER=AlarmEmailAddress
+ :me at myaddress
+RRULE
+ :FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,WE,TH
+EXDATE
+ :20050118T000000
+DTSTART
+ :20050118T160000Z
+DTEND
+ :20050118T170000Z
+DTSTAMP
+ :20050116T154856Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :927172676
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20020826
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :1ce81410-4769-11d9-8693-ee0b0a9128b1
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041228
+DTEND
+ ;VALUE=DATE
+ :20041229
+DTSTAMP
+ :20041206T092748Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :2285be0e-4769-11d9-9032-fb135edc90b2
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20041227
+DTEND
+ ;VALUE=DATE
+ :20041228
+DTSTAMP
+ :20041206T092802Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :3be6a610-4769-11d9-bf60-e015b2923205
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050325
+DTEND
+ ;VALUE=DATE
+ :20050326
+DTSTAMP
+ :20041206T092845Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :42faa140-4769-11d9-8181-bcd3c0ece72d
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050328
+DTEND
+ ;VALUE=DATE
+ :20050329
+DTSTAMP
+ :20041206T092857Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :496a1a2e-4769-11d9-8b9e-9a84f95c649f
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050502
+DTEND
+ ;VALUE=DATE
+ :20050503
+DTSTAMP
+ :20041206T092907Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :4f246064-4769-11d9-add5-c041a1ed7968
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050530
+DTEND
+ ;VALUE=DATE
+ :20050531
+DTSTAMP
+ :20041206T092917Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :56208410-4769-11d9-840a-ff72353214de
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050829
+DTEND
+ ;VALUE=DATE
+ :20050830
+DTSTAMP
+ :20041206T092929Z
+LAST-MODIFIED
+ :20041206T092938Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :6389be50-4769-11d9-b537-96d51d02ab76
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051227
+DTEND
+ ;VALUE=DATE
+ :20051228
+DTSTAMP
+ :20041206T092951Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :698ded6c-4769-11d9-9e35-8764b0ff2b8e
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20051226
+DTEND
+ ;VALUE=DATE
+ :20051227
+DTSTAMP
+ :20041206T093001Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7323412e-4769-11d9-8f2d-c469be04ddf5
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060102
+DTEND
+ ;VALUE=DATE
+ :20060103
+DTSTAMP
+ :20041206T093018Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :7ff3e4ee-4769-11d9-b1d4-e2dcd6159dd0
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060414
+DTEND
+ ;VALUE=DATE
+ :20060415
+DTSTAMP
+ :20041206T093038Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :85c3a04e-4769-11d9-8af7-cda5e3e98ebe
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060417
+DTEND
+ ;VALUE=DATE
+ :20060418
+DTSTAMP
+ :20041206T093047Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :8c18df5e-4769-11d9-ac09-e97dffd65595
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060501
+DTEND
+ ;VALUE=DATE
+ :20060502
+DTSTAMP
+ :20041206T093101Z
+LAST-MODIFIED
+ :20041206T093108Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :958a6fda-4769-11d9-88db-e91b56d7b8f8
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060529
+DTEND
+ ;VALUE=DATE
+ :20060530
+DTSTAMP
+ :20041206T093113Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :9f39fd7a-4769-11d9-a665-99a1ee535d36
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20060828
+DTEND
+ ;VALUE=DATE
+ :20060829
+DTSTAMP
+ :20041206T093129Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :a6b9427c-4769-11d9-964c-e7e2f4c2006a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061225
+DTEND
+ ;VALUE=DATE
+ :20061226
+DTSTAMP
+ :20041206T093144Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ab98305a-4769-11d9-b056-be29252508db
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20061226
+DTEND
+ ;VALUE=DATE
+ :20061227
+DTSTAMP
+ :20041206T093151Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :b36fac5e-4769-11d9-9833-cbe45ff8e08b
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070101
+DTEND
+ ;VALUE=DATE
+ :20070102
+DTSTAMP
+ :20041206T093204Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ba1d2270-4769-11d9-bc2f-f524346ae56f
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070406
+DTEND
+ ;VALUE=DATE
+ :20070407
+DTSTAMP
+ :20041206T093217Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :bf0cc0c4-4769-11d9-bd28-8ce79732df58
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070409
+DTEND
+ ;VALUE=DATE
+ :20070410
+DTSTAMP
+ :20041206T093225Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :c70f271c-4769-11d9-85d5-eeae49afa7c8
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070507
+DTEND
+ ;VALUE=DATE
+ :20070508
+DTSTAMP
+ :20041206T093238Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :cd6b8d3a-4769-11d9-8ec2-b2672c137a80
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070528
+DTEND
+ ;VALUE=DATE
+ :20070529
+DTSTAMP
+ :20041206T093248Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :d5de0218-4769-11d9-8ab6-fc42c8cf7511
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20070827
+DTEND
+ ;VALUE=DATE
+ :20070828
+DTSTAMP
+ :20041206T093303Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e2435c06-4769-11d9-8189-85efc4fcc75a
+SUMMARY
+ :Christmas Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071225
+DTEND
+ ;VALUE=DATE
+ :20071226
+DTSTAMP
+ :20041206T093325Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :e6b9626c-4769-11d9-9636-b4b242071a07
+SUMMARY
+ :Boxing Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20071226
+DTEND
+ ;VALUE=DATE
+ :20071227
+DTSTAMP
+ :20041206T093331Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eed602a2-4769-11d9-9c29-87e14bef7e97
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20080101
+DTEND
+ ;VALUE=DATE
+ :20080102
+DTSTAMP
+ :20041206T093345Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :de525990-4768-11d9-b210-dbb23e96122f
+SUMMARY
+ :New Year's day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040101
+DTEND
+ ;VALUE=DATE
+ :20040102
+DTSTAMP
+ :20041206T092559Z
+LAST-MODIFIED
+ :20041207T102901Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :eaabc7bc-4768-11d9-a9f0-d813f0b4250b
+SUMMARY
+ :Good Friday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040409
+DTEND
+ ;VALUE=DATE
+ :20040410
+DTSTAMP
+ :20041206T092625Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :f3741142-4768-11d9-90f2-b75bdc777a72
+SUMMARY
+ :Easter Monday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040412
+DTEND
+ ;VALUE=DATE
+ :20040413
+DTSTAMP
+ :20041206T092637Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :ffac1e82-4768-11d9-af34-c8169769d183
+SUMMARY
+ :Early May Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040503
+DTEND
+ ;VALUE=DATE
+ :20040504
+DTSTAMP
+ :20041206T092702Z
+LAST-MODIFIED
+ :20041207T102903Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :06af693c-4769-11d9-88da-f9a496177710
+SUMMARY
+ :Spring Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040531
+DTEND
+ ;VALUE=DATE
+ :20040601
+DTSTAMP
+ :20041206T092714Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :0fcfe9c4-4769-11d9-b1de-afc927cc7b57
+SUMMARY
+ :Summer Bank Holiday
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20041207T102901
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20040830
+DTEND
+ ;VALUE=DATE
+ :20040831
+DTSTAMP
+ :20041206T092731Z
+LAST-MODIFIED
+ :20041207T102904Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+BEGIN:VEVENT
+UID
+ :359d52c2-4769-11d9-9cd3-fde74dbfad50
+SUMMARY
+ :New Year's Day
+STATUS
+ :TENTATIVE
+CLASS
+ :PRIVATE
+X-MOZILLA-ALARM-DEFAULT-LENGTH
+ :0
+X-MOZILLA-LASTALARMACK
+ :20050103T010338
+X-MOZILLA-RECUR-DEFAULT-INTERVAL
+ :0
+DTSTART
+ ;VALUE=DATE
+ :20050103
+DTEND
+ ;VALUE=DATE
+ :20050104
+DTSTAMP
+ :20041206T092833Z
+LAST-MODIFIED
+ :20050103T010338Z
+BEGIN:VALARM
+TRIGGER
+ ;VALUE=DURATION
+ :-PT1S
+END:VALARM
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :971445858
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :925921922
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20021226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :936923338
+SUMMARY
+ :New Year's Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030101
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :962980365
+SUMMARY
+ :Good Friday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030418
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :909072250
+SUMMARY
+ :Easter Monday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030421
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :940352282
+SUMMARY
+ :May Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030505
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :975821516
+SUMMARY
+ :Spring Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030526
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :902762343
+SUMMARY
+ :Summer Bank Holiday
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20030825
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :956630271
+SUMMARY
+ :Christmas Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031225
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+END:VCALENDAR
+BEGIN:VCALENDAR
+VERSION
+ :2.0
+PRODID
+ :-//Mozilla.org/NONSGML Mozilla Calendar V1.0//EN
+BEGIN:VEVENT
+UID
+ :911737808
+SUMMARY
+ :Boxing Day
+CATEGORIES
+ :Holidays
+CLASS
+ :PUBLIC
+DTSTART
+ ;VALUE=DATE
+ :20031226
+DTSTAMP
+ :20020430T114937Z
+END:VEVENT
+BEGIN:VEVENT
+ORGANIZER:Mailto:B at example.com
+ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C at example.com
+ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D at example.com
+ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big at example.com
+ATTENDEE:conf_Big1 at example.com
+ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E at example.com
+DTSTAMP:19970611T190000Z
+DTSTART:19970701T190000Z
+DTEND:19970701T193000Z
+SUMMARY:Conference
+UID:calsrv.example.com-873970198738777 at example.com
+SEQUENCE:1
+STATUS:CONFIRMED
+END:VEVENT
+END:VCALENDAR
\ No newline at end of file
Property changes on: packages/libtie-ical-perl/branches/upstream/current/t/c_storefetch.t
___________________________________________________________________
Name: svn:executable
+
More information about the Pkg-perl-cvs-commits
mailing list