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

Diff for /todotxt/Text-Todo-REST-API/lib/Text/Todo/REST/API/Actions/GET.pm between version 1.1 and 1.4

version 1.1, 2010/01/26 04:30:13 version 1.4, 2010/02/14 06:14:57
Line 1 
Line 1 
 package Text::Todo::REST::API::Actions::GET;  package Text::Todo::REST::API::Actions::GET;
   
 # $AFresh1: Representations.pm,v 1.2 2010/01/23 07:04:43 andrew Exp $  # $AFresh1: GET.pm,v 1.3 2010/02/13 21:48:28 andrew Exp $
   
 use warnings;  use warnings;
 use strict;  use strict;
Line 31 
Line 31 
     }      }
   
     sub get_entry {      sub get_entry {
         my ( $self, $todo, $key ) = @_;          my ( $self, $todo, $options ) = @_;
           my $entry = $self->_which_key( $options, 'entry' );
   
         if ( !$key ) {  
             return $self->fail("get_entry requires arguments");  
         }  
         elsif ( ref $key eq 'ARRAY' ) {  
             return self->get_entry( $_->[0] );  
         }  
         elsif ( ref $key eq 'HASH' ) {  
             if ( exists $key->{entry} ) {  
                 $key = $key->{entry};  
             }  
             else {  
                 return $self->fail('get_entry requires key [entry]');  
             }  
         }  
   
         my $list = $self->get_list($todo);          my $list = $self->get_list($todo);
   
         if ( $key =~ /^[[:xdigit:]]{32}$/xms ) {          if ( $entry =~ /^[[:xdigit:]]{32}$/xms ) {
             my $search = lc $key;              my $search = lc $entry;
   
             foreach my $e ( @{$list} ) {              foreach my $e ( @{$list} ) {
                 if ( $search eq $e->{md5} ) {                  if ( $search eq $e->{md5} ) {
Line 59 
Line 45 
                 }                  }
             }              }
         }          }
         elsif ( $key =~ /^\d+$/xms ) {          elsif ( $entry =~ /^\d+$/xms ) {
             return $list->[ $key - 1 ];              return $list->[ $entry - 1 ];
         }          }
   
         return $self->fail("Unable to find entry!");          return $self->_fail("Unable to find entry [$entry]!");
     }      }
   
     sub get_list {      sub get_list {
Line 84 
Line 70 
         my $dir = $todo->file('todo_dir');          my $dir = $todo->file('todo_dir');
   
         if ( !$dir ) {          if ( !$dir ) {
             return $self->fail('Unable to find todo_dir');              return $self->_fail('Unable to find todo_dir');
         }          }
   
         my $file_regex = $options->{file_regex};          my $file_regex = $options->{file_regex};
Line 97 
Line 83 
     }      }
   
     sub get_tags {      sub get_tags {
         my ( $self, $todo, $tag ) = @_;          my ( $self, $todo, $options ) = @_;
         return [ $todo->listtag($tag) ];          my $tag = $self->_which_key( $options, 'tags' );
           if ($tag) {
               return [ $todo->listtag($tag) ];
           }
           else {
               return $todo->known_tags;
           }
       }
   
       sub _which_key {
           my ( $self, $key, $type ) = @_;
   
           return if !defined $key;
   
           if ( ref $key eq 'ARRAY' ) {
               $key = $key->[0];
           }
           elsif ( ref $key eq 'HASH' ) {
               if ( exists $key->{$type} ) {
                   $key = $key->{$type};
               }
               else {
                   return $self->_fail(
                       caller() . ' requires key [' . $type . ']' );
               }
           }
   
           return $key;
     }      }
   
     sub _fail {      sub _fail {

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

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