Git init
[framework/uifw/e17.git] / data / other / parse_todo.pl
1 #!/usr/bin/perl
2
3 use strict;
4
5 my $new_item = 0;
6 my $in_body  = 0;
7 my $is_title = 0;
8
9 # this hash is like this
10 #
11 # hash<str, arr<hash<str,str>>>
12 #
13 # [title1] -> [ (item1, asignee1), (item2, asignee2) ]
14 # [title2] -> [ (item1, asignee1) ]
15 #
16 my %todo_hash;
17 my $title;
18 my $item = {};
19
20 # use globals
21 sub push_item {
22         if ($item->{'task'}) {
23                 my $task = $item->{'task'};
24                 $task =~ s/^\* //;
25                 if ($task =~ s/<(.*)>//) {
26                         $item->{'asignee_email'} = $1;
27                         $1 =~ /(.*) AT /;
28                         $item->{'asignee'} = $1;
29                 } else {
30                         $item->{'asignee_email'} = 0;
31                         $item->{'asignee'} = 'None';
32                 }
33                 $item->{'task'} = $task;
34                 push(@{$todo_hash{$title}}, $item);
35         }
36 }
37
38 while(<>) {
39         chomp;    
40
41         if(/\[\[\[/) {
42                 $item->{'task'} = 0;
43                 $in_body = 1;
44         } elsif (/\]\]\]/) {
45                 if ($in_body) {
46                         push_item;
47                         $item = {};
48                         $in_body = 0;
49                 }
50         } elsif (/^---.*---$/) {
51                 if ($in_body) {
52                         if($is_title) {
53                                 $is_title = 0;
54                         } else {
55                                 $is_title = 1;
56                         }
57                 }
58         } elsif (/^\* /) {
59                 if ($in_body ) {
60                         push_item;
61                         $item = {};
62                         $item->{'task'} = $_ ;
63                 }
64         } else {
65                 if ($in_body) {
66                         if ($is_title) {
67                                 $title = $_;
68                         } else {
69                                 $item->{'task'} = $item->{'task'} . $_ ;
70                         }
71                 }
72         }
73
74 }
75
76 for $title ( keys %todo_hash ) {
77         my $count = 1;
78         print "<h2>" . $title . "</h2>\n";
79
80         print "<table>\n";
81         print "    <tr><td>#</td><td>Asignee</td><td>Task</td></tr>\n";
82         for $item ( @{$todo_hash{$title}} ) {
83                 my $asignee_email = $item->{'asignee_email'};
84                 my $asignee = $item->{'asignee'};
85                 my $task = $item->{'task'};
86
87                 my $mailto;
88
89                 if ($asignee_email) {
90                      $mailto = "<a href='mailto://$asignee_email'>$asignee</a>" 
91                 } else {
92                      $mailto = $asignee;
93                 }
94                 print "    <tr><td>$count</td><td>$mailto</td><td>$task</td></tr>\n";
95                 $count++;
96         }
97         print "</table>\n";
98 }