=================================================================== RCS file: /cvs/todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Representations/text.pm,v retrieving revision 1.1 retrieving revision 1.7 diff -u -r1.1 -r1.7 --- todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Representations/text.pm 2010/01/18 03:51:40 1.1 +++ todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Representations/text.pm 2010/02/16 04:10:38 1.7 @@ -1,8 +1,8 @@ package Text::Todo::REST::API::Representations::text; -# $AFresh1: text.pm,v 1.3 2010/01/18 00:30:55 andrew Exp $ +# $AFresh1: text.pm,v 1.6 2010/02/13 22:24:15 andrew Exp $ -use base 'Text::Todo::REST::API'; +use base 'Text::Todo::REST::API::Representations'; use warnings; use strict; @@ -11,42 +11,63 @@ use version; our $VERSION = qv('0.0.1'); { - my %handled_formats = map { $_ => 1 } qw( - text - txt - ); + sub content_type { return 'text/plain' } - sub content_type { return 'text/plain' }; + sub can_render { + my ( $class, $format ) = @_; + return if !defined $format; - sub _handles { - my ($class, $format) = @_; + my %handled_formats = map { $_ => 1 } qw( + text + txt + ); + return exists $handled_formats{$format}; } + sub _render { + my ( $self, $format, $data ) = @_; - sub Dump { - my ($self, @output) = @_; - my $action = $self->_action; + $data ||= []; my $output; - if ($action eq 'files') { - foreach my $o (@output) { - $output .= "$o\n"; - } + foreach my $line ( @{$data} ) { + $output .= "$line\n"; } - elsif ($action eq 'list' || $action eq 'entry') { - foreach my $o (@output) { - $output .= "$o->{text}\n"; + return $output; + } + sub render_files { _render(@_) } + + sub render_tags { + my ( $self, $format, $data ) = @_; + + if (ref $data eq 'HASH') { + my $output = ''; + foreach my $k (sort keys %{ $data }) { + $output .= $k . ': ' . $data->{$k} . "\n"; } + return $output; } - else { - $output .= $self->SUPER::Dump(@output); + + return $self->_render($format, $data); + } + + sub render_list { + my ( $self, $format, $input ) = @_; + + return if !defined $input; + + if ( ref $input ne 'ARRAY' ) { + $input = [$input]; } - return $output; + + return $self->_render($format, [ map "$_->{text}", @{ $input } ]); } + + sub render_entry { render_list(@_) } } -1; # Magic true value required at end of module +1; # Magic true value required at end of module __END__ =head1 NAME