X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FAttributeHelpers%2FCounter.pm;h=678f0f66c5d28e764f4cd74e6fcd0b9066237508;hb=fda444e70db8fa4a13c1a24dda315b506d45b839;hp=70fe41a6f15da432f5f14ff2ac956e83e516046d;hpb=829736f940bf63730acfa8166eb033222629d879;p=gitmo%2FMooseX-AttributeHelpers.git diff --git a/lib/MooseX/AttributeHelpers/Counter.pm b/lib/MooseX/AttributeHelpers/Counter.pm index 70fe41a..678f0f6 100644 --- a/lib/MooseX/AttributeHelpers/Counter.pm +++ b/lib/MooseX/AttributeHelpers/Counter.pm @@ -2,49 +2,18 @@ package MooseX::AttributeHelpers::Counter; use Moose; -our $VERSION = '0.02'; +our $VERSION = '0.20'; +$VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; -use MooseX::AttributeHelpers::MethodProvider::Counter; - -extends 'MooseX::AttributeHelpers::Base'; - -has '+method_provider' => ( - default => 'MooseX::AttributeHelpers::MethodProvider::Counter' -); - -sub helper_type { 'Num' } - -before 'process_options_for_provides' => sub { - my ($self, $options, $name) = @_; - - # Set some default attribute options here unless already defined - if (my $type = $self->helper_type && !exists $options->{isa}){ - $options->{isa} = $self->helper_type; - } - - $options->{is} = 'ro' unless exists $options->{is}; - $options->{default} = 0 unless exists $options->{default}; -}; - -after 'check_provides_values' => sub { - my $self = shift; - my $provides = $self->provides; - - unless (scalar keys %$provides) { - my $method_constructors = $self->method_constructors; - my $attr_name = $self->name; - - foreach my $method (keys %$method_constructors) { - $provides->{$method} = ($method . '_' . $attr_name); - } - } -}; +extends 'Moose::Meta::Attribute'; +with 'MooseX::AttributeHelpers::Trait::Counter'; no Moose; # register the alias ... -package Moose::Meta::Attribute::Custom::Counter; +package # hide me from search.cpan.org + Moose::Meta::Attribute::Custom::Counter; sub register_implementation { 'MooseX::AttributeHelpers::Counter' } 1; @@ -57,45 +26,12 @@ __END__ MooseX::AttributeHelpers::Counter -=head1 SYNOPSIS - - package MyHomePage; - use Moose; - use MooseX::AttributeHelpers; - - has 'counter' => ( - metaclass => 'Counter', - is => 'ro', - isa => 'Num', - default => sub { 0 }, - provides => { - inc => 'inc_counter', - dec => 'dec_counter', - reset => 'reset_counter', - } - ); - - my $page = MyHomePage->new(); - $page->inc_counter; # same as $page->counter($page->counter + 1); - $page->dec_counter; # same as $page->counter($page->counter - 1); - -=head1 DESCRIPTION - -This module provides a simple counter attribute, which can be -incremented and decremeneted. - -If your attribute definition does not include any of I, I, -I or I but does use the C metaclass, -then this module applies defaults as in the L -above. This allows for a very basic counter definition: - - has 'foo' => (metaclass => 'Counter'); - $obj->inc_foo; - =head1 METHODS =over 4 +=item B + =item B =item B @@ -112,30 +48,9 @@ Run after its superclass method. =back -=head1 PROVIDED METHODS - -It is important to note that all those methods do in place -modification of the value stored in the attribute. - -=over 4 - -=item I - -Increments the value stored in this slot by 1. - -=item I - -Decrements the value stored in this slot by 1. - -=item I - -Resets the value stored in this slot to it's default value. - -=back - =head1 BUGS -All complex software has bugs lurking in it, and this module is no +All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT. @@ -145,7 +60,7 @@ Stevan Little Estevan@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2007 by Infinity Interactive, Inc. +Copyright 2007-2009 by Infinity Interactive, Inc. L @@ -153,3 +68,4 @@ This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut +