# HG changeset patch # User Shinji KONO # Date 1381480417 -32400 # Node ID cc4f95f742f7609c5091059335dbb7bd7bdcc29f # Parent 3fcdab33e15dbc07f8397a12bb31a77b10a922db fix for iCal diff -r 3fcdab33e15d -r cc4f95f742f7 Calcon.pm --- a/Calcon.pm Fri Oct 11 11:27:03 2013 +0900 +++ b/Calcon.pm Fri Oct 11 17:33:37 2013 +0900 @@ -2913,7 +2913,7 @@ $dtend = "\nDTEND;VALUE=DATE:$dtend"; } if (defined( $record{'modify-date'})) { - $dtstamp = "\nDTSTAMP;TZID=$timezone:".$self->date($record{'modify-date'}); + $dtstamp = "\nDTSTAMP:".$self->date($record{'modify-date'})."Z"; } my $summary = ''; @@ -4202,8 +4202,10 @@ open(F,"<".$file); $out->start_file(''); - + my $line = 0; + my $ev= 0; while() { + $line++; s/\r//g; s/\;CHARSET\=SHIFT_JIS//g; s/\;CHARSET\=EUC//g; @@ -4215,7 +4217,7 @@ } elsif (/^adr(.*):\s*(.*)/i) { $self->items($record,'address',$1,$2); } elsif (/^bday:\s*(.*)/i) { $record->{'birth'} = $self->make_date($1); } elsif (/^begin:\s*vcard/i) { $record = $self->make_record; -} elsif (/^begin:\s*vevent/i) { $record = $self->make_record; +} elsif (/^begin:\s*vevent/i) { $record = $self->make_record; if($ev) { print STDERR "$line no end vevet \n"; } $ev=1; } elsif (/^calscale:\s*(.*)/i) { } elsif (/^uid:\s*(.*)/i) { } elsif (/^x-gn:\s*(.*)/i) { $record->{'group'} .= $1; @@ -4234,16 +4236,16 @@ } elsif (/^X-GNO:/i) { } elsif (/^X-ABUID:/i) { } elsif (/^note:\s*(.*)/i) { $record->{'memo'} .= $1; +} elsif (/^dtend;value\=date:\s*(.*)/i) { $record->{'all-day'} = 'true'; $record->{'end-date'} = $self->date($1); } elsif (/^dtend(.*):\s*(.*)/i) { $record->{'end-date'} = $self->date($2,$1?$1:$record->{'timezone'}); - if (//) { - $record->{'all-day'} = 'true'; - } } elsif (/^dtstamp(.*):\s*(.*)/i) { $record->{'modify-date'} = $self->date($2,$1?$1:$record->{'timezone'}); +} elsif (/^dtstart;value\=date:\s*(.*)/i) { $record->{'all-day'} = 'true'; $record->{'end-date'} = $self->date($1); } elsif (/^dtstart(.*):\s*(.*)/i) { $record->{'date'} = $self->date($2,$1?$1:$record->{'timezone'}); } elsif (/^duration:\s*(.*)/i) { $self->duration($record,$1); } elsif (/^email(.*):\s*(.*)/i) { $self->items($record,'mail',$1,$2); } elsif (/^end:\s*vcard/i) { $self->vcard($record); } elsif (/^end:\s*vevent/i) { + $ev=0; next if ($record->{'memo'} =~ /^\s+$/); $self->event($record); } elsif (/^fn:\s*(.*)/i) { $self->name($record,$1);