=================================================================== RCS file: /cvs/todotxt/Text-Todo/bin/todo.pl,v retrieving revision 1.3 retrieving revision 1.5 diff -u -r1.3 -r1.5 --- todotxt/Text-Todo/bin/todo.pl 2010/01/10 22:59:16 1.3 +++ todotxt/Text-Todo/bin/todo.pl 2010/01/10 23:37:12 1.5 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $RedRiver: todo.pl,v 1.2 2010/01/10 07:13:54 andrew Exp $ +# $RedRiver: todo.pl,v 1.4 2010/01/10 23:26:04 andrew Exp $ ######################################################################## # todo.pl *** a perl version of todo.sh. Uses Text::Todo. # @@ -140,8 +140,34 @@ die "Unable to add [$entry]\n"; } -sub append { return &unsupported } -sub archive { return &unsupported } +sub append { + my ( $config, $line, $text ) = @_; + if ( !( $line && $text && $line =~ /^\d+$/xms ) ) { + die 'usage: todo.pl append ITEM# "TEXT TO APPEND"' . "\n"; + } + + my $todo = Text::Todo->new($config); + my $entry = $todo->list->[ $line - 1 ]; + + if ( $entry->append($text) && $todo->save ) { + return printf "%02d: %s\n", $line, $entry->text; + } + die "Unable to append\n"; +} + +sub archive { + my ( $config ) = @_; + my $todo = Text::Todo->new($config); + + my $file = $todo->file; + + my $archived = $todo->archive; + if (defined $archived) { + return print "TODO: $file archived.\n"; + } + die "Unable to archive $file\n"; +} + sub command { return &unsupported } sub del { return &unsupported } sub depri { return &unsupported } @@ -241,12 +267,12 @@ $term = defined $term ? quotemeta($term) : ''; my $shown = 0; - foreach my $e ( - sort { lc $a->{entry}->text cmp lc $b->{entry}->text } - grep { $_->{entry}->text =~ /$term/xms } @list - ) - { - printf "%02d %s\n", $e->{line}, $e->{entry}->text; + my @sorted + = map { sprintf "%02d %s", $_->{line}, $_->{entry}->text } + sort { lc $a->{entry}->text cmp lc $b->{entry}->text } @list; + + foreach my $line ( grep {/$term/xms} @sorted ) { + print $line, "\n"; $shown++; }