version 1.24, 2010/01/19 18:53:36 |
version 1.27, 2010/02/13 23:06:34 |
|
|
package Text::Todo::Entry; |
package Text::Todo::Entry; |
|
|
# $AFresh1: Entry.pm,v 1.23 2010/01/18 03:04:48 andrew Exp $ |
# $AFresh1: Entry.pm,v 1.26 2010/01/22 01:30:45 andrew Exp $ |
|
|
use warnings; |
use warnings; |
use strict; |
use strict; |
use Carp; |
use Carp; |
|
|
use Class::Std::Utils; |
use Class::Std::Utils; |
use List::Util qw/ first /; |
|
|
|
use version; our $VERSION = qv('0.1.0'); |
use version; our $VERSION = qv('0.1.1'); |
|
|
{ |
{ |
|
|
|
|
return; |
return; |
} |
} |
|
|
|
sub known_tags { |
|
my ( $self ) = @_; |
|
return $known_tags_of{ ident($self) }; |
|
} |
|
|
sub _tags { |
sub _tags { |
my ( $self, $tag ) = @_; |
my ( $self, $tag ) = @_; |
my $ident = ident($self); |
my $ident = ident($self); |
|
|
|
|
sub _is_in { |
sub _is_in { |
my ( $self, $tags, $item ) = @_; |
my ( $self, $tags, $item ) = @_; |
return defined first { $_ eq $item } $self->$tags; |
foreach ($self->$tags) { |
|
return 1 if $_ eq $item; |
|
} |
|
return 0; |
} |
} |
|
|
sub text { |
sub text { |
|
|
|
|
sub done { |
sub done { |
my ($self) = @_; |
my ($self) = @_; |
my $ident = ident($self); |
return $completion_status_of{ ident($self) }; |
|
|
return $completion_status_of{$ident}; |
|
} |
} |
|
|
sub DESTROY { |
sub DESTROY { |
|
|
|
|
Each tag type generates two accessor functions {tag}s and in_{tag}. |
Each tag type generates two accessor functions {tag}s and in_{tag}. |
|
|
Current tags are context (@) and project (+). |
Default tags are context (@) and project (+). |
|
|
When creating a new object you can pass in new tags to recognize. |
When creating a new object you can pass in new tags to recognize. |
|
|
|
|
|
|
my @due_dates = $entry->due_dates; |
my @due_dates = $entry->due_dates; |
|
|
then @due_dates eq ( '2011-01-01' ); |
then @due_dates is ( '2011-01-01' ); |
|
|
and you could also: |
and you could also: |
|
|
|
|
|
|
|
|
=over |
=over |
|
|
|
=item known_tags |
|
|
|
$known_tags = $entry->known_tags; |
|
|
|
$known_tags by default would be: |
|
|
|
{ context => '@', |
|
project => '+', |
|
} |
|
|
=item {tag}s |
=item {tag}s |
|
|