[Bps-public-commit] Data-ICal branch, master, updated. b13ca0940a20609dc2176caf5e38d983369fd26d
Alex M Vandiver
alexmv at bestpractical.com
Thu Jul 9 22:35:23 EDT 2009
The branch, master has been updated
via b13ca0940a20609dc2176caf5e38d983369fd26d (commit)
via 3babe11fe65415391e2efc3d025ecbfcd0c11de7 (commit)
via c12e52ec53091cacde9b52827f7de9ed1ab74258 (commit)
from 9f2cad48253c746a4d295ea8017eb0f3a22a1952 (commit)
Summary of changes:
.gitignore | 5 +
Changes | 3 +
MANIFEST | 3 +-
MANIFEST.SKIP | 2 +
META.yml | 7 +-
SIGNATURE | 61 +++++++-------
inc/Module/AutoInstall.pm | 17 ++--
inc/Module/Install.pm | 111 ++++++++++++++++++++------
inc/Module/Install/AutoInstall.pm | 2 +-
inc/Module/Install/Base.pm | 60 +++++++++------
inc/Module/Install/Can.pm | 10 +--
inc/Module/Install/Fetch.pm | 2 +-
inc/Module/Install/Include.pm | 2 +-
inc/Module/Install/Makefile.pm | 39 ++++++---
inc/Module/Install/Metadata.pm | 158 ++++++++++++++++++++++++++----------
inc/Module/Install/Win32.pm | 2 +-
inc/Module/Install/WriteAll.pm | 14 +++-
lib/Data/ICal.pm | 4 +-
lib/Data/ICal/Entry.pm | 41 +++++++---
lib/Data/ICal/Property.pm | 42 ++++++----
t/01.simplegen.t | 7 +-
t/02.linewrap.t | 2 +-
t/03.unknown-props.t | 2 +-
t/04.mandatory-props.t | 2 +-
t/05.prop-params.t | 2 +-
t/06.prop-bad-quote.t | 2 +-
t/09.mime.t | 2 +-
t/10.mime-vcal10.t | 2 +-
t/11.crlf.t | 41 ++++++++++
29 files changed, 448 insertions(+), 199 deletions(-)
create mode 100644 .gitignore
create mode 100644 t/11.crlf.t
- Log -----------------------------------------------------------------
commit c12e52ec53091cacde9b52827f7de9ed1ab74258
Author: Alex Vandiver <alex at chmrr.net>
Date: Thu Jul 9 21:04:02 2009 -0400
Change to \r\n as the default newline, per RFC 2445 spec
diff --git a/lib/Data/ICal.pm b/lib/Data/ICal.pm
index 9d362f7..ca3437d 100644
--- a/lib/Data/ICal.pm
+++ b/lib/Data/ICal.pm
@@ -137,7 +137,7 @@ sub parse {
return $self->_error("could not open '$args{filename}': $!");
@lines = map {chomp; $_} <$fh>;
} else {
- @lines = split /\n/, $args{data};
+ @lines = split /\r?\n/, $args{data};
}
@lines = $self->_vcal10_input_cleanup(@lines) if $self->vcal10;
diff --git a/lib/Data/ICal/Entry.pm b/lib/Data/ICal/Entry.pm
index 878fd04..2bc1073 100644
--- a/lib/Data/ICal/Entry.pm
+++ b/lib/Data/ICal/Entry.pm
@@ -6,6 +6,8 @@ use base qw/Class::Accessor/;
use Data::ICal::Property;
use Carp;
+use constant CRLF => "\x0d\x0a";
+
=head1 NAME
Data::ICal::Entry - Represents an entry in an iCalendar file
@@ -56,22 +58,31 @@ sub new {
return $self;
}
-=head2 as_string
+=head2 as_string [ crlf => C<CRLF> ]
-Returns the entry as an appropriately formatted string (with trailing newline).
+Returns the entry as an appropriately formatted string (with trailing
+newline).
-Properties are returned in alphabetical order, with multiple properties of the same name
-returned in the order added. (Property order is unimportant
-in iCalendar, and this makes testing easier.)
+Properties are returned in alphabetical order, with multiple
+properties of the same name returned in the order added. (Property
+order is unimportant in iCalendar, and this makes testing easier.)
If any mandatory property is missing, issues a warning.
+The string to use as a newline can optionally be specified by giving
+the a C<crlf> argument, which defaults to C<\x0d\x0a>, per RFC 2445
+spec; this option is primarily for backwards compatability with
+versions of this module before 0.16.
+
=cut
sub as_string {
my $self = shift;
- my %args = (@_);
- my $output = $self->header;
+ my %args = (
+ crlf => CRLF,
+ @_
+ );
+ my $output = $self->header(%args);
for my $name (
$self->mandatory_unique_properties,
@@ -91,7 +102,7 @@ sub as_string {
for my $entry ( @{ $self->entries } ) {
$output .= $entry->as_string(%args);
}
- $output .= $self->footer;
+ $output .= $self->footer(%args);
return $output;
}
@@ -192,7 +203,7 @@ sub add_property {
my ( $prop_value, $param_hash ) = @$val;
my $p = Data::ICal::Property->new( $prop => $prop_value, $param_hash );
- $p->vcal10( $self-> vcal10 );
+ $p->vcal10( $self->vcal10 );
push @{ $self->properties->{$prop} }, $p;
}
@@ -364,7 +375,11 @@ Returns the header line for the entry (including trailing newline).
sub header {
my $self = shift;
- return 'BEGIN:' . $self->ical_entry_type . "\n";
+ my %args = (
+ crlf => CRLF,
+ @_
+ );
+ return 'BEGIN:' . $self->ical_entry_type . $args{crlf};
}
=head2 footer
@@ -375,7 +390,11 @@ Returns the footer line for the entry (including trailing newline).
sub footer {
my $self = shift;
- return 'END:' . $self->ical_entry_type . "\n";
+ my %args = (
+ crlf => CRLF,
+ @_
+ );
+ return 'END:' . $self->ical_entry_type . $args{crlf};
}
# mapping of event types to class (under the Data::Ical::Event namespace)
diff --git a/lib/Data/ICal/Property.pm b/lib/Data/ICal/Property.pm
index 16440ea..a10d76f 100644
--- a/lib/Data/ICal/Property.pm
+++ b/lib/Data/ICal/Property.pm
@@ -172,22 +172,31 @@ Takes named arguments:
Defaults to true. pass in a false value if you need to generate non-rfc-compliant calendars.
-=back
+=item crlf
+
+Defaults to C<\x0d\x0a>, per RFC 2445 spec. This option is primarily
+for backwards compatability with version of this module prior to 0.16,
+which used C<\x0a>.
+=back
=cut
sub as_string {
my $self = shift;
- my %args = ( fold => 1, @_ );
+ my %args = (
+ fold => 1,
+ crlf => Data::ICal::Entry->CRLF,
+ @_
+ );
my $string = uc( $self->key )
. $self->_parameters_as_string . ":"
- . $self->_value_as_string( $self->key ) . "\n";
+ . $self->_value_as_string( $self->key ) . $args{crlf};
# Assumption: the only place in an iCalendar that needs folding are property
# lines
if ( $args{'fold'} ) {
- return $self->_fold($string);
+ return $self->_fold($string, $args{crlf});
} else {
return $string;
}
@@ -217,7 +226,7 @@ sub _value_as_string {
$value =~ s/\\/\\/gs;
$value =~ s/;/\\;/gs unless lc($key) eq 'rrule';
$value =~ s/,/\\,/gs unless lc($key) eq 'rrule';
- $value =~ s/\n/\\n/gs;
+ $value =~ s/\x0d?\x0a/\\n/gs;
$value =~ s/\\N/\\N/gs;
}
@@ -281,14 +290,14 @@ sub _quoted_parameter_values {
=begin private
-=head2 _fold $string
+=head2 _fold $string $crlf
Returns C<$string> folded with newlines and leading whitespace so that each
line is at most 75 characters.
(Note that it folds at 75 characters, not 75 bytes as specified in the standard.)
-If this is vCalendar 1.0 and encoded with QUOTED-PRINTABLE, folds with = instead.
+If this is vCalendar 1.0 and encoded with QUOTED-PRINTABLE, does not fold at all.
=end private
@@ -297,26 +306,23 @@ If this is vCalendar 1.0 and encoded with QUOTED-PRINTABLE, folds with = instead
sub _fold {
my $self = shift;
my $string = shift;
+ my $crlf = shift;
my $quoted_printable = $self->vcal10 &&
uc($self->parameters->{'ENCODING'}||'') eq 'QUOTED-PRINTABLE';
- # We can't just use a s//g, because we need to include the added space/= and
- # first character of the next line in the count for the next line.
-
if ($quoted_printable) {
# In old vcal, quoted-printable properties have different folding rules.
# But some interop tests suggest it's wiser just to not fold for vcal 1.0
# at all (in quoted-printable).
-
- # [do nothing]
-
-# while ( $string =~ /.{75}[^\n=]/ ) {
-# $string =~ s/(.{75})([^\n=])/$1=\n$2/;
-# }
} else {
- while ( $string =~ /(.{76})/ ) {
- $string =~ s/(.{75})(.)/$1\n $2/;
+ my $pos = 0;
+ # Walk through the value, looking to replace 75 characters at
+ # a time. We assign to pos() to update where to pick up for
+ # the next match.
+ while ($string =~ s/\G(.{75})(?=.)/$1$crlf /) {
+ $pos += 75 + length($crlf);
+ pos($string) = $pos;
}
}
diff --git a/t/01.simplegen.t b/t/01.simplegen.t
index 58b6476..fa61b28 100644
--- a/t/01.simplegen.t
+++ b/t/01.simplegen.t
@@ -39,8 +39,7 @@ ok($s->add_entry($todo));
is(scalar @{ $s->entries},1);
-
-is_string($s->as_string, <<END_VCAL, "Got the right output");
+is_string($s->as_string(crlf => "\n"), <<END_VCAL, "Got the right output");
BEGIN:VCALENDAR
PRODID:Data::ICal $Data::ICal::VERSION
VERSION:2.0
@@ -55,7 +54,7 @@ END_VCAL
$todo->add_property( suMMaRy => "This one trumps number two, even though weird capitalization!");
-is_string($s->as_string, <<END_VCAL, "add_property is case insensitive");
+is_string($s->as_string(crlf => "\n"), <<END_VCAL, "add_property is case insensitive");
BEGIN:VCALENDAR
PRODID:Data::ICal $Data::ICal::VERSION
VERSION:2.0
@@ -86,7 +85,7 @@ $event->add_properties(
ok($s->add_entry($event));
is(scalar @{ $s->entries},2);
-is_string($s->as_string, <<END_VCAL, "got the right output");
+is_string($s->as_string(crlf => "\n"), <<END_VCAL, "got the right output");
BEGIN:VCALENDAR
PRODID:Data::ICal $Data::ICal::VERSION
VERSION:2.0
diff --git a/t/02.linewrap.t b/t/02.linewrap.t
index c525d7c..4f657c4 100644
--- a/t/02.linewrap.t
+++ b/t/02.linewrap.t
@@ -19,7 +19,7 @@ cmp_ok(length $hundreds_of_characters, '>', 75, "the summary is bigger than the
$todo->add_property(summary => $hundreds_of_characters);
lacks_string($todo->as_string, $hundreds_of_characters, "the long string isn't there");
-unlike_string($todo->as_string, qr/.{76}/, "no lines are too long");
+unlike_string($todo->as_string, qr/[^\r\n]{76}/, "no lines are too long");
like_string($todo->as_string(fold => 0), qr/.{300}/, "no lines are too long".$todo->as_string(fold=>0));
diff --git a/t/03.unknown-props.t b/t/03.unknown-props.t
index e4527e9..d97b671 100644
--- a/t/03.unknown-props.t
+++ b/t/03.unknown-props.t
@@ -22,7 +22,7 @@ warning_is { $todo->add_property( summmmary => 'Summmm it up.' ) }
{carped => "Unknown property for Data::ICal::Entry::Todo: summmmary"},
"Got a warning for fake property set";
-is_string($todo->as_string, <<END_VCAL, "Got the right output");
+is_string($todo->as_string( crlf => "\n"), <<END_VCAL, "Got the right output");
BEGIN:VTODO
SUMMARY:Sum it up.
SUMMMMARY:Summmm it up.
diff --git a/t/04.mandatory-props.t b/t/04.mandatory-props.t
index bd4d6e3..6bc0462 100644
--- a/t/04.mandatory-props.t
+++ b/t/04.mandatory-props.t
@@ -23,7 +23,7 @@ $cal->properties->{'prodid'} = [];
my $str;
-warning_is { $str = $cal->as_string }
+warning_is { $str = $cal->as_string( crlf => "\n") }
{carped => "Mandatory property for Data::ICal missing: prodid"},
"Got a warning for missing mandatory property";
diff --git a/t/05.prop-params.t b/t/05.prop-params.t
index 896b85f..4476f6c 100644
--- a/t/05.prop-params.t
+++ b/t/05.prop-params.t
@@ -17,7 +17,7 @@ $todo->add_property( summary => [ 'Sum it up.', { language => "en-US", value =>
$todo->add_properties( attendee => [ 'MAILTO:janedoe at host.com',
{ member => [ 'MAILTO:projectA at host.com', 'MAILTO:projectB at host.com' ] } ]);
-is_string($todo->as_string, <<'END_VCAL', "Got the right output");
+is_string($todo->as_string( crlf => "\n"), <<'END_VCAL', "Got the right output");
BEGIN:VTODO
ATTENDEE;MEMBER="MAILTO:projectA at host.com","MAILTO:projectB at host.com":MAILT
O:janedoe at host.com
diff --git a/t/06.prop-bad-quote.t b/t/06.prop-bad-quote.t
index b38c052..e43b2ea 100644
--- a/t/06.prop-bad-quote.t
+++ b/t/06.prop-bad-quote.t
@@ -16,7 +16,7 @@ $todo->add_property( summary => [ 'Sum it up.', { language => 'bla"bla'} ] );
my $str;
-warning_like { $str = $todo->as_string }
+warning_like { $str = $todo->as_string( crlf => "\n") }
{carped => qr(Invalid parameter value)},
"Got a warning for fake property set";
diff --git a/t/09.mime.t b/t/09.mime.t
index 1af8471..2fc2943 100644
--- a/t/09.mime.t
+++ b/t/09.mime.t
@@ -46,4 +46,4 @@ $cal->add_entry($todo);
$todo->add_property(description => $decoded_desc);
$cal->entries->[0]->property('description')->[0]->encode('QUotED-PRintabLE');
-is_string($cal->as_string, $encoded_vcal);
+is_string($cal->as_string( crlf => "\n" ), $encoded_vcal);
diff --git a/t/10.mime-vcal10.t b/t/10.mime-vcal10.t
index e91ab8b..61953d2 100644
--- a/t/10.mime-vcal10.t
+++ b/t/10.mime-vcal10.t
@@ -60,7 +60,7 @@ $cal->add_entry($todo);
$todo->add_property(description => $decoded_desc);
$cal->entries->[0]->property('description')->[0]->encode('QUotED-PRintabLE');
-is($cal->as_string, $encoded_vcal_out);
+is($cal->as_string( crlf => "\n"), $encoded_vcal_out);
__END__
diff --git a/t/11.crlf.t b/t/11.crlf.t
new file mode 100644
index 0000000..cfa20ee
--- /dev/null
+++ b/t/11.crlf.t
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+use warnings;
+use strict;
+
+use Test::More tests => 4;
+use Test::LongString;
+use Test::NoWarnings;
+
+use Data::ICal;
+use Data::ICal::Entry::Todo;
+my $s = Data::ICal->new( );
+my $todo = Data::ICal::Entry::Todo->new( );
+$todo->add_properties(
+ url => 'http://example.com/todo1',
+ summary => 'A sample todo',
+ comment => 'a first comment',
+ comment => 'a second comment',
+ summary => 'This summary trumps the first summary'
+);
+$s->add_entry($todo);
+
+my $expect = <<END_VCAL;
+BEGIN:VCALENDAR
+PRODID:Data::ICal $Data::ICal::VERSION
+VERSION:2.0
+BEGIN:VTODO
+COMMENT:a first comment
+COMMENT:a second comment
+SUMMARY:This summary trumps the first summary
+URL:http://example.com/todo1
+END:VTODO
+END:VCALENDAR
+END_VCAL
+
+is_string($s->as_string( crlf => "\n"), $expect, "crlf \\n works as expected");
+
+$expect =~ s/\n/\r\n/g;
+
+is_string($s->as_string( crlf => "\r\n"), $expect, "crlf \\r\\n works as expected");
+is_string($s->as_string, $expect, "No arguments is \\r\\n");
commit 3babe11fe65415391e2efc3d025ecbfcd0c11de7
Author: Alex Vandiver <alex at chmrr.net>
Date: Thu Jul 9 22:24:22 2009 -0400
Module::Install bump
diff --git a/META.yml b/META.yml
index 9c85bbd..dcef0c1 100644
--- a/META.yml
+++ b/META.yml
@@ -3,12 +3,15 @@ abstract: 'Generates iCalendar (RFC 2445) calendar files'
author:
- 'Jesse Vincent <jesse at bestpractical.com>'
build_requires:
+ ExtUtils::MakeMaker: 6.42
Test::LongString: 0
Test::More: 0
Test::NoWarnings: 0
Test::Warn: 0
+configure_requires:
+ ExtUtils::MakeMaker: 6.42
distribution_type: module
-generated_by: 'Module::Install version 0.79'
+generated_by: 'Module::Install version 0.85'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
diff --git a/inc/Module/AutoInstall.pm b/inc/Module/AutoInstall.pm
index 7efc552..739bc85 100644
--- a/inc/Module/AutoInstall.pm
+++ b/inc/Module/AutoInstall.pm
@@ -115,6 +115,8 @@ sub import {
)[0]
);
+ $UnderCPAN = _check_lock(1); # check for $UnderCPAN
+
while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) {
my ( @required, @tests, @skiptests );
my $default = 1;
@@ -184,6 +186,7 @@ sub import {
!$SkipInstall
and (
$CheckOnly
+ or ($mandatory and $UnderCPAN)
or _prompt(
qq{==> Auto-install the }
. ( @required / 2 )
@@ -214,8 +217,6 @@ sub import {
}
}
- $UnderCPAN = _check_lock(); # check for $UnderCPAN
-
if ( @Missing and not( $CheckOnly or $UnderCPAN ) ) {
require Config;
print
@@ -237,7 +238,7 @@ sub import {
# Check to see if we are currently running under CPAN.pm and/or CPANPLUS;
# if we are, then we simply let it taking care of our dependencies
sub _check_lock {
- return unless @Missing;
+ return unless @Missing or @_;
if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) {
print <<'END_MESSAGE';
@@ -313,7 +314,7 @@ sub install {
@modules = @newmod;
}
- if ( _has_cpanplus() ) {
+ if ( _has_cpanplus() and not $ENV{PERL_AUTOINSTALL_PREFER_CPAN} ) {
_install_cpanplus( \@modules, \@config );
} else {
_install_cpan( \@modules, \@config );
@@ -706,7 +707,7 @@ sub _make_args {
if $Config;
$PostambleActions = (
- $missing
+ ($missing and not $UnderCPAN)
? "\$(PERL) $0 --config=$config --installdeps=$missing"
: "\$(NOECHO) \$(NOOP)"
);
@@ -746,7 +747,7 @@ sub Write {
sub postamble {
$PostambleUsed = 1;
- return << ".";
+ return <<"END_MAKE";
config :: installdeps
\t\$(NOECHO) \$(NOOP)
@@ -757,7 +758,7 @@ checkdeps ::
installdeps ::
\t$PostambleActions
-.
+END_MAKE
}
@@ -765,4 +766,4 @@ installdeps ::
__END__
-#line 1003
+#line 1004
diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
index b46be99..5b9ddbf 100644
--- a/inc/Module/Install.pm
+++ b/inc/Module/Install.pm
@@ -17,12 +17,10 @@ package Module::Install;
# 3. The ./inc/ version of Module::Install loads
# }
-BEGIN {
- require 5.004;
-}
+use 5.005;
use strict 'vars';
-use vars qw{$VERSION};
+use vars qw{$VERSION $MAIN};
BEGIN {
# All Module::Install core packages now require synchronised versions.
# This will be used to ensure we don't accidentally load old or
@@ -30,7 +28,10 @@ BEGIN {
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
- $VERSION = '0.79';
+ $VERSION = '0.85';
+
+ # Storage for the pseudo-singleton
+ $MAIN = undef;
*inc::Module::Install::VERSION = *VERSION;
@inc::Module::Install::ISA = __PACKAGE__;
@@ -69,15 +70,26 @@ END_DIE
# again. This is bad. Rather than taking action to touch it (which
# is unreliable on some platforms and requires write permissions)
# for now we should catch this and refuse to run.
-if ( -f $0 and (stat($0))[9] > time ) { die <<"END_DIE" }
+if ( -f $0 ) {
+ my $s = (stat($0))[9];
+
+ # If the modification time is only slightly in the future,
+ # sleep briefly to remove the problem.
+ my $a = $s - time;
+ if ( $a > 0 and $a < 5 ) { sleep 5 }
+
+ # Too far in the future, throw an error.
+ my $t = time;
+ if ( $s > $t ) { die <<"END_DIE" }
-Your installer $0 has a modification time in the future.
+Your installer $0 has a modification time in the future ($s > $t).
This is known to create infinite loops in make.
Please correct this, then run $0 again.
END_DIE
+}
@@ -121,14 +133,22 @@ sub autoload {
$sym->{$cwd} = sub {
my $pwd = Cwd::cwd();
if ( my $code = $sym->{$pwd} ) {
- # delegate back to parent dirs
+ # Delegate back to parent dirs
goto &$code unless $cwd eq $pwd;
}
$$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
- unless ( uc($1) eq $1 ) {
- unshift @_, ( $self, $1 );
- goto &{$self->can('call')};
+ my $method = $1;
+ if ( uc($method) eq $method ) {
+ # Do nothing
+ return;
+ } elsif ( $method =~ /^_/ and $self->can($method) ) {
+ # Dispatch to the root M:I class
+ return $self->$method(@_);
}
+
+ # Dispatch to the appropriate plugin
+ unshift @_, ( $self, $1 );
+ goto &{$self->can('call')};
};
}
@@ -153,6 +173,9 @@ sub import {
delete $INC{"$self->{file}"};
delete $INC{"$self->{path}.pm"};
+ # Save to the singleton
+ $MAIN = $self;
+
return 1;
}
@@ -166,8 +189,7 @@ sub preload {
my @exts = @{$self->{extensions}};
unless ( @exts ) {
- my $admin = $self->{admin};
- @exts = $admin->load_all_extensions;
+ @exts = $self->{admin}->load_all_extensions;
}
my %seen;
@@ -250,7 +272,7 @@ END_DIE
sub load_extensions {
my ($self, $path, $top) = @_;
- unless ( grep { !ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
+ unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
unshift @INC, $self->{prefix};
}
@@ -314,7 +336,7 @@ sub find_extensions {
#####################################################################
-# Utility Functions
+# Common Utility Functions
sub _caller {
my $depth = 0;
@@ -328,31 +350,70 @@ sub _caller {
sub _read {
local *FH;
- open FH, "< $_[0]" or die "open($_[0]): $!";
- my $str = do { local $/; <FH> };
+ if ( $] >= 5.006 ) {
+ open( FH, '<', $_[0] ) or die "open($_[0]): $!";
+ } else {
+ open( FH, "< $_[0]" ) or die "open($_[0]): $!";
+ }
+ my $string = do { local $/; <FH> };
close FH or die "close($_[0]): $!";
- return $str;
+ return $string;
+}
+
+sub _readperl {
+ my $string = Module::Install::_read($_[0]);
+ $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
+ $string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s;
+ $string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg;
+ return $string;
+}
+
+sub _readpod {
+ my $string = Module::Install::_read($_[0]);
+ $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
+ return $string if $_[0] =~ /\.pod\z/;
+ $string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg;
+ $string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg;
+ $string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg;
+ $string =~ s/^\n+//s;
+ return $string;
}
sub _write {
local *FH;
- open FH, "> $_[0]" or die "open($_[0]): $!";
- foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!" }
+ if ( $] >= 5.006 ) {
+ open( FH, '>', $_[0] ) or die "open($_[0]): $!";
+ } else {
+ open( FH, "> $_[0]" ) or die "open($_[0]): $!";
+ }
+ foreach ( 1 .. $#_ ) {
+ print FH $_[$_] or die "print($_[0]): $!";
+ }
close FH or die "close($_[0]): $!";
}
# _version is for processing module versions (eg, 1.03_05) not
# Perl versions (eg, 5.8.1).
-
sub _version ($) {
my $s = shift || 0;
- $s =~ s/^(\d+)\.?//;
+ my $d =()= $s =~ /(\.)/g;
+ if ( $d >= 2 ) {
+ # Normalise multipart versions
+ $s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg;
+ }
+ $s =~ s/^(\d+)\.?//;
my $l = $1 || 0;
- my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g;
- $l = $l . '.' . join '', @v if @v;
+ my @v = map {
+ $_ . '0' x (3 - length $_)
+ } $s =~ /(\d{1,3})\D?/g;
+ $l = $l . '.' . join '', @v if @v;
return $l + 0;
}
+sub _cmp ($$) {
+ _version($_[0]) <=> _version($_[1]);
+}
+
# Cloned from Params::Util::_CLASS
sub _CLASS ($) {
(
@@ -360,7 +421,7 @@ sub _CLASS ($) {
and
! ref $_[0]
and
- $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*$/s
+ $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s
) ? $_[0] : undef;
}
diff --git a/inc/Module/Install/AutoInstall.pm b/inc/Module/Install/AutoInstall.pm
index 343738e..b7e92a5 100644
--- a/inc/Module/Install/AutoInstall.pm
+++ b/inc/Module/Install/AutoInstall.pm
@@ -6,7 +6,7 @@ use Module::Install::Base;
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
index 1145fe4..ac416c9 100644
--- a/inc/Module/Install/Base.pm
+++ b/inc/Module/Install/Base.pm
@@ -1,7 +1,11 @@
#line 1
package Module::Install::Base;
-$VERSION = '0.79';
+use strict 'vars';
+use vars qw{$VERSION};
+BEGIN {
+ $VERSION = '0.85';
+}
# Suspend handler for "redefined" warnings
BEGIN {
@@ -12,51 +16,61 @@ BEGIN {
### This is the ONLY module that shouldn't have strict on
# use strict;
-#line 41
+#line 45
sub new {
- my ($class, %args) = @_;
+ my ($class, %args) = @_;
- foreach my $method ( qw(call load) ) {
- *{"$class\::$method"} = sub {
- shift()->_top->$method(@_);
- } unless defined &{"$class\::$method"};
- }
+ foreach my $method ( qw(call load) ) {
+ next if defined &{"$class\::$method"};
+ *{"$class\::$method"} = sub {
+ shift()->_top->$method(@_);
+ };
+ }
- bless( \%args, $class );
+ bless( \%args, $class );
}
-#line 61
+#line 66
sub AUTOLOAD {
- my $self = shift;
- local $@;
- my $autoload = eval { $self->_top->autoload } or return;
- goto &$autoload;
+ my $self = shift;
+ local $@;
+ my $autoload = eval {
+ $self->_top->autoload
+ } or return;
+ goto &$autoload;
}
-#line 76
+#line 83
-sub _top { $_[0]->{_top} }
+sub _top {
+ $_[0]->{_top};
+}
-#line 89
+#line 98
sub admin {
- $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new;
+ $_[0]->_top->{admin}
+ or
+ Module::Install::Base::FakeAdmin->new;
}
-#line 101
+#line 114
sub is_admin {
- $_[0]->admin->VERSION;
+ $_[0]->admin->VERSION;
}
sub DESTROY {}
package Module::Install::Base::FakeAdmin;
-my $Fake;
-sub new { $Fake ||= bless(\@_, $_[0]) }
+my $fake;
+
+sub new {
+ $fake ||= bless(\@_, $_[0]);
+}
sub AUTOLOAD {}
@@ -69,4 +83,4 @@ BEGIN {
1;
-#line 146
+#line 162
diff --git a/inc/Module/Install/Can.pm b/inc/Module/Install/Can.pm
index ac81dec..3e2d523 100644
--- a/inc/Module/Install/Can.pm
+++ b/inc/Module/Install/Can.pm
@@ -3,15 +3,13 @@ package Module::Install::Can;
use strict;
use Module::Install::Base;
-use Config ();
-### This adds a 5.005 Perl version dependency.
-### This is a bug and will be fixed.
-use File::Spec ();
+use Config ();
+use File::Spec ();
use ExtUtils::MakeMaker ();
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
@@ -80,4 +78,4 @@ if ( $^O eq 'cygwin' ) {
__END__
-#line 158
+#line 156
diff --git a/inc/Module/Install/Fetch.pm b/inc/Module/Install/Fetch.pm
index 41d9569..0a62208 100644
--- a/inc/Module/Install/Fetch.pm
+++ b/inc/Module/Install/Fetch.pm
@@ -6,7 +6,7 @@ use Module::Install::Base;
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
diff --git a/inc/Module/Install/Include.pm b/inc/Module/Install/Include.pm
index 742121a..92aad58 100644
--- a/inc/Module/Install/Include.pm
+++ b/inc/Module/Install/Include.pm
@@ -6,7 +6,7 @@ use Module::Install::Base;
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
diff --git a/inc/Module/Install/Makefile.pm b/inc/Module/Install/Makefile.pm
index 689a4b7..2b80f0f 100644
--- a/inc/Module/Install/Makefile.pm
+++ b/inc/Module/Install/Makefile.pm
@@ -7,7 +7,7 @@ use ExtUtils::MakeMaker ();
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
@@ -114,17 +114,32 @@ sub write {
my $self = shift;
die "&Makefile->write() takes no arguments\n" if @_;
- # Make sure we have a new enough
- require ExtUtils::MakeMaker;
+ # Check the current Perl version
+ my $perl_version = $self->perl_version;
+ if ( $perl_version ) {
+ eval "use $perl_version; 1"
+ or die "ERROR: perl: Version $] is installed, "
+ . "but we need version >= $perl_version";
+ }
- # MakeMaker can complain about module versions that include
- # an underscore, even though its own version may contain one!
- # Hence the funny regexp to get rid of it. See RT #35800
- # for details.
+ # Make sure we have a new enough MakeMaker
+ require ExtUtils::MakeMaker;
- $self->configure_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
+ if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) {
+ # MakeMaker can complain about module versions that include
+ # an underscore, even though its own version may contain one!
+ # Hence the funny regexp to get rid of it. See RT #35800
+ # for details.
+ $self->build_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
+ $self->configure_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
+ } else {
+ # Allow legacy-compatibility with 5.005 by depending on the
+ # most recent EU:MM that supported 5.005.
+ $self->build_requires( 'ExtUtils::MakeMaker' => 6.42 );
+ $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 );
+ }
- # Generate the
+ # Generate the MakeMaker params
my $args = $self->makemaker_args;
$args->{DISTNAME} = $self->name;
$args->{NAME} = $self->module_name || $self->name;
@@ -133,7 +148,7 @@ sub write {
if ( $self->tests ) {
$args->{test} = { TESTS => $self->tests };
}
- if ($] >= 5.005) {
+ if ( $] >= 5.005 ) {
$args->{ABSTRACT} = $self->abstract;
$args->{AUTHOR} = $self->author;
}
@@ -147,7 +162,7 @@ sub write {
delete $args->{SIGN};
}
- # merge both kinds of requires into prereq_pm
+ # Merge both kinds of requires into prereq_pm
my $prereq = ($args->{PREREQ_PM} ||= {});
%$prereq = ( %$prereq,
map { @$_ }
@@ -250,4 +265,4 @@ sub postamble {
__END__
-#line 379
+#line 394
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
index 37d5eff..ca16db7 100644
--- a/inc/Module/Install/Metadata.pm
+++ b/inc/Module/Install/Metadata.pm
@@ -4,13 +4,18 @@ package Module::Install::Metadata;
use strict 'vars';
use Module::Install::Base;
-use vars qw{$VERSION $ISCORE @ISA};
+use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '0.79';
- $ISCORE = 1;
+ $VERSION = '0.85';
@ISA = qw{Module::Install::Base};
+ $ISCORE = 1;
}
+my @boolean_keys = qw{
+ sign
+ mymeta
+};
+
my @scalar_keys = qw{
name
module_name
@@ -37,16 +42,43 @@ my @resource_keys = qw{
repository
};
+my @array_keys = qw{
+ keywords
+};
+
sub Meta { shift }
+sub Meta_BooleanKeys { @boolean_keys }
sub Meta_ScalarKeys { @scalar_keys }
sub Meta_TupleKeys { @tuple_keys }
sub Meta_ResourceKeys { @resource_keys }
+sub Meta_ArrayKeys { @array_keys }
+
+foreach my $key ( @boolean_keys ) {
+ *$key = sub {
+ my $self = shift;
+ if ( defined wantarray and not @_ ) {
+ return $self->{values}->{$key};
+ }
+ $self->{values}->{$key} = ( @_ ? $_[0] : 1 );
+ return $self;
+ };
+}
foreach my $key ( @scalar_keys ) {
*$key = sub {
my $self = shift;
- return $self->{values}{$key} if defined wantarray and !@_;
- $self->{values}{$key} = shift;
+ return $self->{values}->{$key} if defined wantarray and !@_;
+ $self->{values}->{$key} = shift;
+ return $self;
+ };
+}
+
+foreach my $key ( @array_keys ) {
+ *$key = sub {
+ my $self = shift;
+ return $self->{values}->{$key} if defined wantarray and !@_;
+ $self->{values}->{$key} ||= [];
+ push @{$self->{values}->{$key}}, @_;
return $self;
};
}
@@ -55,12 +87,12 @@ foreach my $key ( @resource_keys ) {
*$key = sub {
my $self = shift;
unless ( @_ ) {
- return () unless $self->{values}{resources};
+ return () unless $self->{values}->{resources};
return map { $_->[1] }
grep { $_->[0] eq $key }
- @{ $self->{values}{resources} };
+ @{ $self->{values}->{resources} };
}
- return $self->{values}{resources}{$key} unless @_;
+ return $self->{values}->{resources}->{$key} unless @_;
my $uri = shift or die(
"Did not provide a value to $key()"
);
@@ -69,17 +101,17 @@ foreach my $key ( @resource_keys ) {
};
}
-foreach my $key ( grep {$_ ne "resources"} @tuple_keys) {
+foreach my $key ( grep { $_ ne "resources" } @tuple_keys) {
*$key = sub {
my $self = shift;
- return $self->{values}{$key} unless @_;
+ return $self->{values}->{$key} unless @_;
my @added;
while ( @_ ) {
my $module = shift or last;
my $version = shift || 0;
push @added, [ $module, $version ];
}
- push @{ $self->{values}{$key} }, @added;
+ push @{ $self->{values}->{$key} }, @added;
return map {@$_} @added;
};
}
@@ -100,29 +132,22 @@ sub resources {
if ( $name eq lc $name and ! $lc_resource{$name} ) {
die("Unsupported reserved lowercase resource '$name'");
}
- $self->{values}{resources} ||= [];
- push @{ $self->{values}{resources} }, [ $name, $value ];
+ $self->{values}->{resources} ||= [];
+ push @{ $self->{values}->{resources} }, [ $name, $value ];
}
- $self->{values}{resources};
+ $self->{values}->{resources};
}
# Aliases for build_requires that will have alternative
# meanings in some future version of META.yml.
-sub test_requires { shift->build_requires(@_) }
-sub install_requires { shift->build_requires(@_) }
+sub test_requires { shift->build_requires(@_) }
+sub install_requires { shift->build_requires(@_) }
# Aliases for installdirs options
-sub install_as_core { $_[0]->installdirs('perl') }
-sub install_as_cpan { $_[0]->installdirs('site') }
-sub install_as_site { $_[0]->installdirs('site') }
-sub install_as_vendor { $_[0]->installdirs('vendor') }
-
-sub sign {
- my $self = shift;
- return $self->{values}{sign} if defined wantarray and ! @_;
- $self->{values}{sign} = ( @_ ? $_[0] : 1 );
- return $self;
-}
+sub install_as_core { $_[0]->installdirs('perl') }
+sub install_as_cpan { $_[0]->installdirs('site') }
+sub install_as_site { $_[0]->installdirs('site') }
+sub install_as_vendor { $_[0]->installdirs('vendor') }
sub dynamic_config {
my $self = shift;
@@ -130,13 +155,13 @@ sub dynamic_config {
warn "You MUST provide an explicit true/false value to dynamic_config\n";
return $self;
}
- $self->{values}{dynamic_config} = $_[0] ? 1 : 0;
+ $self->{values}->{dynamic_config} = $_[0] ? 1 : 0;
return 1;
}
sub perl_version {
my $self = shift;
- return $self->{values}{perl_version} unless @_;
+ return $self->{values}->{perl_version} unless @_;
my $version = shift or die(
"Did not provide a value to perl_version()"
);
@@ -149,20 +174,41 @@ sub perl_version {
die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n";
}
- $self->{values}{perl_version} = $version;
+ $self->{values}->{perl_version} = $version;
}
+#Stolen from M::B
+my %license_urls = (
+ perl => 'http://dev.perl.org/licenses/',
+ apache => 'http://apache.org/licenses/LICENSE-2.0',
+ artistic => 'http://opensource.org/licenses/artistic-license.php',
+ artistic_2 => 'http://opensource.org/licenses/artistic-license-2.0.php',
+ lgpl => 'http://opensource.org/licenses/lgpl-license.php',
+ lgpl2 => 'http://opensource.org/licenses/lgpl-2.1.php',
+ lgpl3 => 'http://opensource.org/licenses/lgpl-3.0.html',
+ bsd => 'http://opensource.org/licenses/bsd-license.php',
+ gpl => 'http://opensource.org/licenses/gpl-license.php',
+ gpl2 => 'http://opensource.org/licenses/gpl-2.0.php',
+ gpl3 => 'http://opensource.org/licenses/gpl-3.0.html',
+ mit => 'http://opensource.org/licenses/mit-license.php',
+ mozilla => 'http://opensource.org/licenses/mozilla1.1.php',
+ open_source => undef,
+ unrestricted => undef,
+ restrictive => undef,
+ unknown => undef,
+);
+
sub license {
my $self = shift;
- return $self->{values}{license} unless @_;
+ return $self->{values}->{license} unless @_;
my $license = shift or die(
'Did not provide a value to license()'
);
- $self->{values}{license} = $license;
+ $self->{values}->{license} = $license;
# Automatically fill in license URLs
- if ( $license eq 'perl' ) {
- $self->resources( license => 'http://dev.perl.org/licenses/' );
+ if ( $license_urls{$license} ) {
+ $self->resources( license => $license_urls{$license} );
}
return 1;
@@ -204,7 +250,7 @@ sub all_from {
sub provides {
my $self = shift;
- my $provides = ( $self->{values}{provides} ||= {} );
+ my $provides = ( $self->{values}->{provides} ||= {} );
%$provides = (%$provides, @_) if @_;
return $provides;
}
@@ -233,7 +279,7 @@ sub auto_provides {
sub feature {
my $self = shift;
my $name = shift;
- my $features = ( $self->{values}{features} ||= [] );
+ my $features = ( $self->{values}->{features} ||= [] );
my $mods;
if ( @_ == 1 and ref( $_[0] ) ) {
@@ -261,16 +307,16 @@ sub features {
while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) {
$self->feature( $name, @$mods );
}
- return $self->{values}{features}
- ? @{ $self->{values}{features} }
+ return $self->{values}->{features}
+ ? @{ $self->{values}->{features} }
: ();
}
sub no_index {
my $self = shift;
my $type = shift;
- push @{ $self->{values}{no_index}{$type} }, @_ if $type;
- return $self->{values}{no_index};
+ push @{ $self->{values}->{no_index}->{$type} }, @_ if $type;
+ return $self->{values}->{no_index};
}
sub read {
@@ -423,10 +469,18 @@ sub license_from {
return 'unknown';
}
+sub _extract_bugtracker {
+ my @links = $_[0] =~ m#L<(\Qhttp://rt.cpan.org/\E[^>]+)>#g;
+ my %links;
+ @links{@links}=();
+ @links=keys %links;
+ return @links;
+}
+
sub bugtracker_from {
my $self = shift;
my $content = Module::Install::_read($_[0]);
- my @links = $content =~ m/L\<(http\:\/\/rt\.cpan\.org\/[^>]+)\>/g;
+ my @links = _extract_bugtracker($content);
unless ( @links ) {
warn "Cannot determine bugtracker info from $_[0]\n";
return 0;
@@ -441,6 +495,17 @@ sub bugtracker_from {
return 1;
}
+sub requires_from {
+ my $self = shift;
+ my $content = Module::Install::_readperl($_[0]);
+ my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
+ while ( @requires ) {
+ my $module = shift @requires;
+ my $version = shift @requires;
+ $self->requires( $module => $version );
+ }
+}
+
# Convert triple-part versions (eg, 5.6.1 or 5.8.9) to
# numbers (eg, 5.006001 or 5.008009).
# Also, convert double-part versions (eg, 5.8)
@@ -464,7 +529,7 @@ sub _perl_version {
# MYMETA.yml Support
sub WriteMyMeta {
- $_[0]->write_mymeta;
+ die "WriteMyMeta has been deprecated";
}
sub write_mymeta {
@@ -473,6 +538,11 @@ sub write_mymeta {
# If there's no existing META.yml there is nothing we can do
return unless -f 'META.yml';
+ # We need YAML::Tiny to write the MYMETA.yml file
+ unless ( eval { require YAML::Tiny; 1; } ) {
+ return 1;
+ }
+
# Merge the perl version into the dependencies
my $val = $self->Meta->{values};
my $perl = delete $val->{perl_version};
@@ -488,7 +558,6 @@ sub write_mymeta {
}
# Load the advisory META.yml file
- require YAML::Tiny;
my @yaml = YAML::Tiny::LoadFile('META.yml');
my $meta = $yaml[0];
@@ -504,7 +573,8 @@ sub write_mymeta {
}
# Save as the MYMETA.yml file
- YAML::Tiny::DumpFile('MYMETA.yml', $meta);
+ print "Writing MYMETA.yml\n";
+ YAML::Tiny::DumpFile('MYMETA.yml', $meta);
}
1;
diff --git a/inc/Module/Install/Win32.pm b/inc/Module/Install/Win32.pm
index 2bd721a..c00da94 100644
--- a/inc/Module/Install/Win32.pm
+++ b/inc/Module/Install/Win32.pm
@@ -6,7 +6,7 @@ use Module::Install::Base;
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
@ISA = qw{Module::Install::Base};
$ISCORE = 1;
}
diff --git a/inc/Module/Install/WriteAll.pm b/inc/Module/Install/WriteAll.pm
index 3819d78..df3900a 100644
--- a/inc/Module/Install/WriteAll.pm
+++ b/inc/Module/Install/WriteAll.pm
@@ -6,7 +6,7 @@ use Module::Install::Base;
use vars qw{$VERSION @ISA $ISCORE};
BEGIN {
- $VERSION = '0.79';
+ $VERSION = '0.85';
@ISA = qw{Module::Install::Base};
$ISCORE = 1;
}
@@ -22,7 +22,6 @@ sub WriteAll {
);
$self->sign(1) if $args{sign};
- $self->Meta->write if $args{meta};
$self->admin->WriteAll(%args) if $self->is_admin;
$self->check_nmake if $args{check_nmake};
@@ -30,11 +29,22 @@ sub WriteAll {
$self->makemaker_args( PL_FILES => {} );
}
+ # Until ExtUtils::MakeMaker support MYMETA.yml, make sure
+ # we clean it up properly ourself.
+ $self->realclean_files('MYMETA.yml');
+
if ( $args{inline} ) {
$self->Inline->write;
} else {
$self->Makefile->write;
}
+
+ # The Makefile write process adds a couple of dependencies,
+ # so write the META.yml files after the Makefile.
+ $self->Meta->write if $args{meta};
+ $self->Meta->write_mymeta if $self->mymeta;
+
+ return 1;
}
1;
commit b13ca0940a20609dc2176caf5e38d983369fd26d
Author: Alex Vandiver <alex at chmrr.net>
Date: Thu Jul 9 22:28:46 2009 -0400
Version 0.15_01 releng
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ebaf4d1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+Makefile
+blib/
+Makefile.old
+pm_to_blib
+MANIFEST.bak
diff --git a/Changes b/Changes
index 6e6f08f..02e0a5c 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
Revision history for Data-ICal
+0.15_01
+ * Use \r\n as the newline character, per RFC 3445
+
0.15
* Escaping fixes
diff --git a/MANIFEST b/MANIFEST
index 84a8889..9921a9b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -42,8 +42,9 @@ t/07.roundtrip.t
t/08.parse.t
t/09.mime.t
t/10.mime-vcal10.t
+t/11.crlf.t
t/ics/badlyformed.ics
-t/ics/test.ics
t/ics/noversion.ics
+t/ics/test.ics
t/pod-coverage.t
t/pod.t
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
index 7f16725..d9eb078 100644
--- a/MANIFEST.SKIP
+++ b/MANIFEST.SKIP
@@ -15,3 +15,5 @@
\.swo$
pm_to_blib
\.shipit$
+^.git/
+.gitignore
diff --git a/META.yml b/META.yml
index dcef0c1..b4b55db 100644
--- a/META.yml
+++ b/META.yml
@@ -29,4 +29,4 @@ requires:
Text::vFile::asData: 0
resources:
license: http://dev.perl.org/licenses/
-version: 0.15
+version: 0.15_01
diff --git a/SIGNATURE b/SIGNATURE
index 2f2b1c0..d2b43ec 100644
--- a/SIGNATURE
+++ b/SIGNATURE
@@ -14,26 +14,26 @@ not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 a66c0b594a103bdd9ec7d80a54daa1d3e658c473 Changes
-SHA1 57c2097e5e5376a950b176f296b90dce4d86452b MANIFEST
-SHA1 b2fea6a2b585a14743c1f2c7949edf67aa8c5d30 META.yml
-SHA1 d9c6af97d586360df8b31d69d4a981eefea06ba6 Makefile.PL
+SHA1 4d8d3956bfb087e8040b6f7c882eb483fd3be841 Changes
+SHA1 5431e81bc6604fb7a108c0616e0f841c7f790739 MANIFEST
+SHA1 5934ccd98073ccf2eaacb0b9e7ec6708cc322e32 META.yml
+SHA1 2e091ae7e52799ba1f315134ce2a2d2bfd703ce0 Makefile.PL
SHA1 d9f0e46f1abb63475a9d382938debf95ec586612 README
SHA1 53368d91c157d1932b76db94854288903ae7ec59 doc/rfc2445.txt
SHA1 1ca8755782cececa8cb19deddbcbe03be8e73cfc examples/ical2html.pl
-SHA1 603bb9de29fb8cba7f13409c546750972eff645d inc/Module/AutoInstall.pm
-SHA1 ae018c4565c1277089ca8f1b28f888d95430cb7f inc/Module/Install.pm
-SHA1 0a6f29536bedea3bb94744a7d43ffe39da7e4819 inc/Module/Install/AutoInstall.pm
-SHA1 4552acdfca8b78f8015d8449e1325616259095f5 inc/Module/Install/Base.pm
-SHA1 7fb663fff161fb45882b52edd62857bf15359658 inc/Module/Install/Can.pm
-SHA1 8b1d3db746faa6faf2d967a48d3812ec1f44b4c6 inc/Module/Install/Fetch.pm
-SHA1 d7ce736cdd05d5156d379ef39cca93beeeeba828 inc/Module/Install/Include.pm
-SHA1 9f6beaa2f4749ceb5dd0c9b0c647d0f3289c7b46 inc/Module/Install/Makefile.pm
-SHA1 7ad1da4fff7a1e7a634c9d734111c8292be08884 inc/Module/Install/Metadata.pm
-SHA1 e9aa83f3e8b16ccfce544a90a57b63b70a497759 inc/Module/Install/Win32.pm
-SHA1 ade2ac0b0246d4d8e28fa46942e53f6925abda46 inc/Module/Install/WriteAll.pm
-SHA1 4eae39e6513652da3694fe7561d0435107c94907 lib/Data/ICal.pm
-SHA1 69a7d21453bf68dd6edfd73d1fa9bc234ea570a0 lib/Data/ICal/Entry.pm
+SHA1 6cc7c33dbf3e1635f38ac2acc983c410cd0da679 inc/Module/AutoInstall.pm
+SHA1 18fcb6b27722fad5e465689f9622b03fd6b7d51c inc/Module/Install.pm
+SHA1 f70c42b0ad50721e6480a41346ccb6781e2e2706 inc/Module/Install/AutoInstall.pm
+SHA1 65bc57bf8257e3b66ec571850570626283ca659c inc/Module/Install/Base.pm
+SHA1 f76a19dff601776d6245f87936f0d2e9deb3c74d inc/Module/Install/Can.pm
+SHA1 ce92bd504500c543688fa12eb2ef6c832e9455e6 inc/Module/Install/Fetch.pm
+SHA1 2eef5f385c92c0768b347324d2850fce5a3a39aa inc/Module/Install/Include.pm
+SHA1 c45b2672d8ae49d710343f39f68d00c28cba4b43 inc/Module/Install/Makefile.pm
+SHA1 82e172b951d97f74315af04cb7b909afa546fc07 inc/Module/Install/Metadata.pm
+SHA1 1b1de77b3187dfbbd6de905e539ff1393c1aa6a0 inc/Module/Install/Win32.pm
+SHA1 c1c96fa424457d79caaaf9af61037e6f984e71dc inc/Module/Install/WriteAll.pm
+SHA1 10a1c59679fcde45004fa4553e14e26c3ce8c408 lib/Data/ICal.pm
+SHA1 b0c862c2744d0a5bf27d161473f302a0c6cb5a61 lib/Data/ICal/Entry.pm
SHA1 1aba295f69f55ef58fcf20d4a509222fe4cf02f0 lib/Data/ICal/Entry/Alarm/Audio.pm
SHA1 edc21a5cd2c17e1892a2ab12dd2c8dc31011bb48 lib/Data/ICal/Entry/Alarm/Display.pm
SHA1 3003fb0bba35562d27f94498f4487f7ba1810a39 lib/Data/ICal/Entry/Alarm/Email.pm
@@ -45,27 +45,28 @@ SHA1 f8a94d3181e20d6422a1ad0294685852824df982 lib/Data/ICal/Entry/TimeZone.pm
SHA1 c094381b7739eea4a663acdd4f9af8572a19ad48 lib/Data/ICal/Entry/TimeZone/Daylight.pm
SHA1 fc807da3b247c7b054e971efe6cd0ffc20c741ca lib/Data/ICal/Entry/TimeZone/Standard.pm
SHA1 3b6856f5ec5951e0fb3250059aa3f40e75b03427 lib/Data/ICal/Entry/Todo.pm
-SHA1 63dd8dc63ce00697d115352f8d05d0acb7e2eca3 lib/Data/ICal/Property.pm
+SHA1 33bbd7763ed43de307d515ffc8ceec411bfbcfc6 lib/Data/ICal/Property.pm
SHA1 371dc48be4670c99ffa5f732e7d7584465e39edc t/00.load.t
-SHA1 c3da220214dd88626ba4aa2cef6f5becdb919b37 t/01.simplegen.t
-SHA1 b42254140a1726b34474aaa4b88448710af5f340 t/02.linewrap.t
-SHA1 c8f6131fc1aec7936d975ab637f2aa23249a5f7c t/03.unknown-props.t
-SHA1 399e1db517f9bdce14a3980f51299536f6ab7975 t/04.mandatory-props.t
-SHA1 8390a95bb4dae06bf01153f7ecd9f95537538737 t/05.prop-params.t
-SHA1 a30f42bcd7f659ecbd1c8b2b69ca9c51a4568625 t/06.prop-bad-quote.t
+SHA1 6b8f28b38ce0ce159265f288153d94dea7ba97ac t/01.simplegen.t
+SHA1 0ef26a49106e23a1a99e77f48b18e94a002ca350 t/02.linewrap.t
+SHA1 7aec87bcc3d62d762a2ec4adfaf120016fa1e3e0 t/03.unknown-props.t
+SHA1 1b8e8dde570944000c11b1ac7bdfe44bcdda96ab t/04.mandatory-props.t
+SHA1 703914c6a6e1acfa04c278a1239adc498d6b7b7b t/05.prop-params.t
+SHA1 e19a41be80213d3a306738f074992457623aa200 t/06.prop-bad-quote.t
SHA1 6a3f262179361be328ae6ba4a6c9b0f63b4fa2b9 t/07.roundtrip.t
SHA1 1d27dd46b94878b7494701eb143393f0438675c0 t/08.parse.t
-SHA1 749ad308ae2f344515d03590075bae40673b70ed t/09.mime.t
-SHA1 aedd4e9214e3e43e44ccf3f47a77148e94c23032 t/10.mime-vcal10.t
+SHA1 eaebceaa542f169aab87290e43c9a30019ec1d97 t/09.mime.t
+SHA1 e8200b2244c212e99269de0b9037e2bbb7564431 t/10.mime-vcal10.t
+SHA1 a1598e23236ff655ce8ccdbb6a20af2271a87103 t/11.crlf.t
SHA1 21854f472cd60fd9ce6f88872691f2a744e0af5e t/ics/badlyformed.ics
SHA1 3157614223f00a48699992314b1d48946fc45af7 t/ics/noversion.ics
SHA1 7ad07fa3318aec73b0fe97ccbb8caa1d35b63927 t/ics/test.ics
SHA1 6da39b48ce64b584e4c3274bff96fc76ff484820 t/pod-coverage.t
SHA1 0190346d7072d458c8a10a45c19f86db641dcc48 t/pod.t
-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.9 (GNU/Linux)
+Version: GnuPG v2.0.11 (GNU/Linux)
-iEYEARECAAYFAkmsFnEACgkQMflWJZZAbqA/KQCdEfcqKm834H1TeCglyeQc8Vym
-LGEAniOShZbchZAZ7EIpiMmhBvApt3Xe
-=AO3Y
+iEYEARECAAYFAkpWpysACgkQMflWJZZAbqDWDwCfSCcYDKqpc1H+VLMbegjq+MeX
+GSQAoLx8LnoVLzzD0rrgwMc8WwlXY95a
+=6yRD
-----END PGP SIGNATURE-----
diff --git a/lib/Data/ICal.pm b/lib/Data/ICal.pm
index ca3437d..58e6aae 100644
--- a/lib/Data/ICal.pm
+++ b/lib/Data/ICal.pm
@@ -8,7 +8,7 @@ use Class::ReturnValue;
use Text::vFile::asData;
-our $VERSION = '0.15';
+our $VERSION = '0.15_01';
use Carp;
-----------------------------------------------------------------------
More information about the Bps-public-commit
mailing list