version 1.11, 2010/05/01 21:26:17 |
version 1.12, 2010/05/01 21:54:56 |
|
|
|
|
app->renderer->add_helper( |
app->renderer->add_helper( |
todo => sub { |
todo => sub { |
state $todo = Text::Todo->new( shift->stash('config') ); |
my ($self) = @_; |
|
state $todo = Text::Todo->new( $self->stash('config') ); |
|
|
|
my $file = $self->stash('file'); |
|
if ($file) { |
|
$file =~ s/(?:\.txt)?$/\.txt/ixms; |
|
$todo->load($file); |
|
} |
|
|
return $todo; |
return $todo; |
} |
} |
); |
); |
|
|
app->renderer->add_helper( |
app->renderer->add_helper( |
get_list => sub { |
get_list => sub { |
my ( $self, $file ) = @_; |
my ($self) = @_; |
|
|
$self->helper('todo')->load($file) if $file; |
|
|
|
my $line = 1; |
my $line = 1; |
return [ |
return [ |
map { |
map { |
|
|
get '/todotxt' => 'todotxt'; |
get '/todotxt' => 'todotxt'; |
|
|
get '/l/:file' => sub { |
get '/l/:file' => sub { |
my $self = shift; |
my $self = shift; |
my $file = $self->stash('file') . '.txt'; |
|
my $format = $self->stash('format') || 'html'; |
my $format = $self->stash('format') || 'html'; |
my $list = $self->helper( 'get_list' => $file ); |
|
|
|
if ( $format eq 'json' ) { |
if ( $format eq 'json' ) { |
$self->render_json($list); |
$self->render_json( $self->helper('get_list') ); |
} |
} |
else { |
else { |
$self->render( list => $list, layout => 'todotxt' ); |
$self->render( |
|
list => $self->helper('get_list'), |
|
layout => 'todotxt' |
|
); |
} |
} |
} => 'list'; |
} => 'list'; |
|
|
get '/l/:file/e/:line' => sub { |
get '/l/:file/e/:line' => sub { |
my $self = shift; |
my $self = shift; |
my $file = $self->stash('file') . '.txt'; |
|
my $format = $self->stash('format') || 'html'; |
my $format = $self->stash('format') || 'html'; |
my $entry |
my $entry = $self->helper('get_list')->[ $self->stash('line') - 1 ]; |
= $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); |
|
|
} |
} |
} => 'entry'; |
} => 'entry'; |
|
|
|
get '/l/:file/t' => sub { |
|
my $self = shift; |
|
|
|
my $format = $self->stash('format') || 'html'; |
|
my $tags = $self->helper('todo')->known_tags; |
|
|
|
if ( $format eq 'json' ) { |
|
$self->render_json($tags); |
|
} |
|
else { |
|
$self->render( tags => $tags, layout => 'todotxt' ); |
|
} |
|
} => 'tags'; |
|
|
app->start if !caller(); |
app->start if !caller(); |
|
|
|
1; |
__DATA__ |
__DATA__ |
|
|
@@ list.txt.ep |
@@ list.txt.ep |
|
|
@@ entry.txt.ep |
@@ entry.txt.ep |
<%= $entry->{text} %> |
<%= $entry->{text} %> |
|
|
|
@@ tags.txt.ep |
|
% foreach my $tag (keys%{ $tags }) { |
|
<%= $tag %>, <%= $tags->{$tag} %> |
|
% } |
|
|
@@ layouts/todotxt.txt.ep |
@@ layouts/todotxt.txt.ep |
%= content |
%= content |
|
|
|
|
|
|
@@ entry.html.ep |
@@ entry.html.ep |
<%= $entry->{text} %> |
<%= $entry->{text} %> |
|
|
|
@@ tags.html.ep |
|
% foreach my $tag (keys%{ $tags }) { |
|
<%= $tag %> == <%= $tags->{$tag} %><br /> |
|
% } |
|
|
|
|
@@ layouts/todotxt.html.ep |
@@ layouts/todotxt.html.ep |
<!doctype html><html> |
<!doctype html><html> |