[BACK]Return to Todo.pm CVS log [TXT][DIR] Up to [local] / todotxt / Text-Todo / lib / Text

Diff for /todotxt/Text-Todo/lib/Text/Todo.pm between version 1.10 and 1.15

version 1.10, 2010/01/09 20:41:45 version 1.15, 2010/01/11 19:52:06
Line 1 
Line 1 
 package Text::Todo;  package Text::Todo;
   
 # $RedRiver: Todo.pm,v 1.9 2010/01/09 06:54:15 andrew Exp $  # $AFresh1: Todo.pm,v 1.14 2010/01/10 22:39:26 andrew Exp $
   
 use warnings;  use warnings;
 use strict;  use strict;
Line 25 
Line 25 
         my $ident = ident($self);          my $ident = ident($self);
   
         $path_of{$ident} = {          $path_of{$ident} = {
             todo_dir    => undef,              todo_dir  => undef,
             todo_file   => 'todo.txt',              todo_file => 'todo.txt',
             done_file   => undef,              done_file => undef,
             report_file => undef,  
         };          };
   
         if ($options) {          if ($options) {
Line 38 
Line 37 
                         $self->_path_to( $opt, $options->{$opt} );                          $self->_path_to( $opt, $options->{$opt} );
                     }                      }
                     else {                      else {
                         carp "Invalid option [$opt]";  
                           #carp "Invalid option [$opt]";
                     }                      }
                 }                  }
             }              }
Line 160 
Line 160 
         open my $fh, '<', $file or croak "Couldn't open [$file]: $!";          open my $fh, '<', $file or croak "Couldn't open [$file]: $!";
         while (<$fh>) {          while (<$fh>) {
             s/\r?\n$//xms;              s/\r?\n$//xms;
             next if !length $_;  
             push @list, Text::Todo::Entry->new($_);              push @list, Text::Todo::Entry->new($_);
         }          }
         close $fh or croak "Couldn't close [$file]: $!";          close $fh or croak "Couldn't close [$file]: $!";
Line 198 
Line 197 
     }      }
   
     sub listpri {      sub listpri {
         my ($self) = @_;          my ( $self, $pri ) = @_;
   
         my @list = grep { $_->priority } $self->list;          my @list;
           if ($pri) {
               $pri = uc $pri;
               if ( $pri !~ /^[A-Z]$/xms ) {
                   croak "PRIORITY must a single letter from A to Z.";
               }
               @list = grep { defined $_->priority && $_->priority eq $pri }
                   $self->list;
           }
           else {
               @list = grep { $_->priority } $self->list;
           }
   
         return wantarray ? @list : \@list;          return wantarray ? @list : \@list;
     }      }
Line 250 
Line 260 
     }      }
   
     sub listproj {      sub listproj {
         my ( $self, $entry, $dst ) = @_;          my ( $self ) = @_;
           return $self->listtag('project');
       }
   
       sub listcon {
           my ( $self ) = @_;
           return $self->listtag('context');
       }
   
       sub listtag {
           my ( $self, $tag ) = @_;
         my $ident = ident($self);          my $ident = ident($self);
   
           my $accessor = $tag . 's';
   
         my %available_projects;          my %available;
         foreach my $e ( $self->list ) {          foreach my $e ( $self->list ) {
             foreach my $p ( $e->projects ) {              foreach my $p ( $e->$accessor ) {
                 $available_projects{$p} = 1;                  $available{$p} = 1;
             }              }
         }          }
   
         my @projects = sort keys %available_projects;          my @tags = sort keys %available;
   
         return wantarray ? @projects : \@projects;          return wantarray ? @tags: \@tags;
     }      }
   
     sub archive {      sub archive {
Line 276 
Line 298 
             return;              return;
         }          }
   
         my $archived = 0;          my $changed = 0;
     ENTRY: foreach my $e ( $self->list ) {      ENTRY: foreach my $e ( $self->list ) {
             if ( $e->done ) {              if ( $e->done ) {
                 if ( $self->addto( 'done_file', $e ) && $self->del($e) ) {                  if ( $self->addto( 'done_file', $e ) && $self->del($e) ) {
                     $archived++;                      $changed++;
                 }                  }
                 else {                  else {
                     carp q{Couldn't archive entry [} . $e->text . ']';                      carp q{Couldn't archive entry [} . $e->text . ']';
                     last ENTRY;                      last ENTRY;
                 }                  }
             }              }
               elsif ( $e->text eq q{} ) {
                   if ( $self->del($e) ) {
                       $changed++;
                   }
                   else {
                       carp q{Couldn't delete blank entry};
                       last ENTRY;
                   }
               }
         }          }
   
         if ($archived) {          if ($changed) {
             $self->save;              $self->save;
         }          }
   
         return $archived;          return $changed;
     }      }
   
     sub addto {      sub addto {
Line 566 
Line 597 
 =head1 BUGS AND LIMITATIONS  =head1 BUGS AND LIMITATIONS
   
 No bugs have been reported.  No bugs have been reported.
   
   Limitations:
   
   Currently there isn't an easy way to print out line numbers with the entry.
   
 Please report any bugs or feature requests to  Please report any bugs or feature requests to
 C<bug-text-todo@rt.cpan.org>, or through the web interface at  C<bug-text-todo@rt.cpan.org>, or through the web interface at

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.15

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>