]> pere.pagekite.me Git - homepage.git/blobdiff - linux/plan2icalendar
Generated.
[homepage.git] / linux / plan2icalendar
index d22965dd67ffa7b486f86378e1fd7dbb074a064a..02fc237b364e3cd73d8739d79314588e57a946d6 100755 (executable)
@@ -7,6 +7,8 @@
 #
 # plan, <URL:http://www.bitrot.de/>
 # icalendar, RFC 2445, <URL:http://www.faqs.org/rfcs/rfc2445.html">iCalendar>
+#
+# Depend on debian package libdate-ical-perl
 
 use warnings;
 use strict;
@@ -18,12 +20,12 @@ use Date::ICal;
 
 my @events;
 my %opts;
-my $debug = 0;
-unless (getopts('if:o:', \%opts)) {
+unless (getopts('dif:o:', \%opts)) {
     usage();
     exit 1;
 }
 
+my $debug = $opts{d} || 0;
 my $input  = $opts{f};
 my $output = $opts{o};
 
@@ -38,6 +40,14 @@ exit 0;
 
 sub usage {
     print <<EOF
+Usage: $0 [-i] [-f infile] [-o outfile]
+
+Imports or exports between plan and iCalendar.
+
+  -i          import ical file
+  -f infile   read input from 'infile'
+  -o outfile  read output from 'outfile'
+  -d          enable debug output
 EOF
 }
 sub read_planfile {
@@ -144,25 +154,27 @@ sub read_icalendar {
     open (ICALENDAR, "<$filename") or die "Unable to read from $filename";
     my $oldval = $/;
     $/ = "\r\n";
+    print STDERR "Loading $filename\n" if $debug;
     while (<ICALENDAR>) {
-       chomp;
-       if (m/^BEGIN:VEVENT/) {
-           my %event;
-           while (<ICALENDAR>) {
-               chomp;
-               last if (m/END:VEVENT/);
-               $event{description} = $1 if (m/^DESCRIPTION\s*:\s*(.+)$/);
-               $event{created} = $1 if (m/^CREATED\s*:\s*(.+)$/);
-               $event{dtend} = $1 if (m/^DTEND\s*:\s*(.+)$/);
-               $event{dtstamp} = $1 if (m/^DTSTAMP\s*:\s*(.+)$/);
-               $event{dtstart} = $1 if (m/^DTSTART\s*:\s*(.+)$/);
-               $event{last-modified} = $1 if (m/^LAST-MODIFIED\s*:\s*(.+)$/);
-               $event{sequence} = $1 if (m/^SEQUENCE\s*:\s*(.+)$/);
-               $event{summary} = $1 if (m/^SUMMARY\s*:\s*(.+)$/);
-               $event{uid} = $1 if (m/^UID\s*:\s*(.+)$/);
-           }
-           push @events, \%event;
-       }
+        chomp;
+        if (m/^BEGIN:VEVENT/) {
+            my %event;
+            while (<ICALENDAR>) {
+                chomp;
+                last if (m/END:VEVENT/);
+                $event{description} = $1 if (m/^DESCRIPTION\s*:\s*(.+)$/);
+                $event{created} = $1 if (m/^CREATED\s*:\s*(.+)$/);
+                $event{dtend} = $1 if (m/^DTEND\s*:\s*(.+)$/);
+                $event{dtstamp} = $1 if (m/^DTSTAMP\s*:\s*(.+)$/);
+                $event{dtstart} = $1 if (m/^DTSTART\s*:\s*(.+)$/);
+                $event{last-modified} = $1 if (m/^LAST-MODIFIED\s*:\s*(.+)$/);
+                $event{sequence} = $1 if (m/^SEQUENCE\s*:\s*(.+)$/);
+                $event{summary} = $1 if (m/^SUMMARY\s*:\s*(.+)$/);
+                $event{uid} = $1 if (m/^UID\s*:\s*(.+)$/);
+            }
+            push @events, \%event;
+            print STDERR "Event pushed\n" if $debug;
+        }
     }
     close (ICALENDAR);
     $/ = $oldval;
@@ -174,6 +186,9 @@ sub utf8tolocalmap {
     $string =~ s/ø/ø/g;
     $string =~ s/æ/æ/g;
     $string =~ s/Ã¥/å/g;
+    $string =~ s/Ã\85/Å/g;
+    $string =~ s/«/«/g;
+    $string =~ s/»/»/g;
     return $string;
 }