version 1.9, 2010/01/11 00:17:38 |
version 1.11, 2010/01/11 00:30:31 |
|
|
#!/usr/bin/perl |
#!/usr/bin/perl |
# $RedRiver: todo.pl,v 1.7 2010/01/10 23:58:11 andrew Exp $ |
# $RedRiver: todo.pl,v 1.9 2010/01/11 00:17:38 andrew Exp $ |
######################################################################## |
######################################################################## |
# todo.pl *** a perl version of todo.sh. Uses Text::Todo. |
# todo.pl *** a perl version of todo.sh. Uses Text::Todo. |
# |
# |
|
|
} |
} |
my $todo = Text::Todo->new($config); |
my $todo = Text::Todo->new($config); |
|
|
my $entry = $todo->list->[$line - 1]; |
my $entry = $todo->list->[ $line - 1 ]; |
print "Delete '" . $entry->text . "'? (y/n)\n"; |
print "Delete '" . $entry->text . "'? (y/n)\n"; |
warn "XXX No delete confirmation currently!\n"; |
warn "XXX No delete confirmation currently!\n"; |
|
|
|
|
sub depri { |
sub depri { |
my ( $config, $line ) = @_; |
my ( $config, $line ) = @_; |
if ( !( $line && $line =~ /^\d+$/xms ) ) { |
if ( !( $line && $line =~ /^\d+$/xms ) ) { |
die 'usage: todo.pl del ITEM#' . "\n"; |
die 'usage: todo.pl depri ITEM#' . "\n"; |
} |
} |
my $todo = Text::Todo->new($config); |
my $todo = Text::Todo->new($config); |
|
|
|
|
return print map {"\+$_\n"} $todo->listproj; |
return print map {"\+$_\n"} $todo->listproj; |
} |
} |
|
|
sub move { return &unsupported } |
sub move { return &unsupported } |
|
|
sub prepend { |
sub prepend { |
my ( $config, $line, @text) = @_; |
my ( $config, $line, @text ) = @_; |
if ( !( $line && @text && $line =~ /^\d+$/xms ) ) { |
if ( !( $line && @text && $line =~ /^\d+$/xms ) ) { |
die 'usage: todo.pl prepend ITEM# "TEXT TO PREPEND"' . "\n"; |
die 'usage: todo.pl prepend ITEM# "TEXT TO PREPEND"' . "\n"; |
} |
} |
|
|
die "Unable to prepend\n"; |
die "Unable to prepend\n"; |
} |
} |
|
|
sub pri { return &unsupported } |
sub pri { |
|
my ( $config, $line, $priority ) = @_; |
|
my $error = 'usage: todo.pl pri ITEM# PRIORITY'; |
|
if ( !( $line && $line =~ /^\d+$/xms && $priority ) ) { |
|
die $error; |
|
} |
|
if ( $priority !~ /^[A-Z]$/xms ) { |
|
die $error . "\n" |
|
. "note: PRIORITY must a single letter from A to Z.\n"; |
|
} |
|
|
|
my $todo = Text::Todo->new($config); |
|
|
|
my $entry = $todo->list->[ $line - 1 ]; |
|
if ( $entry->pri($priority) && $todo->save ) { |
|
return print $line, ': ', $entry->text, "\n", |
|
'TODO: ', $line, ' prioritized (', $entry->priority, ").\n"; |
|
} |
|
die "Unable to prioritize entry\n"; |
|
} |
|
|
sub replace { return &unsupported } |
sub replace { return &unsupported } |
sub report { return &unsupported } |
sub report { return &unsupported } |
|
|
|
|
$term = defined $term ? quotemeta($term) : ''; |
$term = defined $term ? quotemeta($term) : ''; |
|
|
my $shown = 0; |
my $shown = 0; |
my @sorted |
my @sorted = map { sprintf "%02d %s", $_->{line}, $_->{entry}->text } |
= map { sprintf "%02d %s", $_->{line}, $_->{entry}->text } |
|
sort { lc $a->{entry}->text cmp lc $b->{entry}->text } @list; |
sort { lc $a->{entry}->text cmp lc $b->{entry}->text } @list; |
|
|
foreach my $line ( grep {/$term/xms} @sorted ) { |
foreach my $line ( grep {/$term/xms} @sorted ) { |