[BACK]Return to dudelicious.pl CVS log [TXT][DIR] Up to [local] / todotxt / Text-Todo / bin

Diff for /todotxt/Text-Todo/bin/dudelicious.pl between version 1.9 and 1.10

version 1.9, 2010/04/30 18:30:57 version 1.10, 2010/05/01 21:23:19
Line 2 
Line 2 
   
 package Dudelicious;  package Dudelicious;
   
   use 5.010;
 use Data::Dumper;  use Data::Dumper;
 use version; our $VERSION = qv('0.1.0');  use version; our $VERSION = qv('0.1.0');
   
Line 25 
Line 26 
     default => { todo_dir => $ENV{DUDELICIOUS_HOME} || '.', },      default => { todo_dir => $ENV{DUDELICIOUS_HOME} || '.', },
 };  };
   
   app->renderer->add_helper(
       todo => sub {
           state $todo = Text::Todo->new( shift->stash('config') );
           return $todo;
       }
   );
   
   app->renderer->add_helper(
       get_list => sub {
           my ( $self, $file ) = @_;
   
           $self->helper('todo')->load($file) if $file;
   
           my $line = 1;
           return [
               map {
                   line => $line++,
                   md5  => md5_hex( $_->text ),
                   text => $_->text,
                   done => $_->done,
               },
               $self->helper('todo')->list
           ];
       }
   );
   
 get '/' => sub {  get '/' => sub {
     my $self = shift;      my $self = shift;
   
     my $dir = _todo($self)->file('todo_dir');      my $dir = $self->helper('todo')->file('todo_dir');
     opendir my $dh, $dir or croak "Unable to opendir $dir: $!";      opendir my $dh, $dir or croak "Unable to opendir $dir: $!";
     my @files = grep {/\.te?xt$/ixms} readdir $dh;      my @files = grep {/\.te?xt$/ixms} readdir $dh;
     closedir $dh;      closedir $dh;
Line 42 
Line 69 
     my $self   = shift;      my $self   = shift;
     my $file   = $self->stash('file') . '.txt';      my $file   = $self->stash('file') . '.txt';
     my $format = $self->stash('format') || 'html';      my $format = $self->stash('format') || 'html';
     my $list   = _get_list( $self, $file );      my $list   = $self->helper( 'get_list' => $file );
   
     if ( $format eq 'json' ) {      if ( $format eq 'json' ) {
         $self->render_json($list);          $self->render_json($list);
Line 56 
Line 83 
     my $self   = shift;      my $self   = shift;
     my $file   = $self->stash('file') . '.txt';      my $file   = $self->stash('file') . '.txt';
     my $format = $self->stash('format') || 'html';      my $format = $self->stash('format') || 'html';
     my $entry  = _get_list( $self, $file )->[ $self->stash('line') - 1 ];      my $entry
           = $self->helper( 'get_list' => $file )->[ $self->stash('line') - 1 ];
   
     if ( $format eq 'json' ) {      if ( $format eq 'json' ) {
         $self->render_json($entry);          $self->render_json($entry);
Line 67 
Line 95 
 } => 'entry';  } => 'entry';
   
 app->start unless caller();  app->start unless caller();
   
 sub _todo {  
     my ($c) = @_;  
   
     if ( !$c->stash('todo') ) {  
         my $todo = Text::Todo->new( $c->stash('config') );  
         $c->stash( 'todo' => $todo );  
     }  
   
     return $c->stash('todo');  
 }  
   
 sub _get_list {  
     my ( $c, $file ) = @_;  
   
     my $line = 1;  
     return [  
         map ( { line => $line++,  
                 md5  => md5_hex( $_->text ),  
                 text => $_->text,  
                 done => $_->done,  
             },  
             _todo($c)->listfile($file),  
         )  
     ];  
 }  
   
 __DATA__  __DATA__
   

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

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