bump version to 0.22
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers / Trait / Counter.pm
index d402f13..d8064bb 100644 (file)
@@ -2,14 +2,14 @@
 package MooseX::AttributeHelpers::Trait::Counter;
 use Moose::Role;
 
-with 'MooseX::AttributeHelpers::Trait::Base'
-  => { excludes => ['method_provider'] };
-
-our $VERSION   = '0.03';
+our $VERSION   = '0.22';
+$VERSION = eval $VERSION;
 our $AUTHORITY = 'cpan:STEVAN';
 
 use MooseX::AttributeHelpers::MethodProvider::Counter;
 
+with 'MooseX::AttributeHelpers::Trait::Base';
+
 has 'method_provider' => (
     is        => 'ro',
     isa       => 'ClassName',
@@ -47,10 +47,117 @@ after 'check_provides_values' => sub {
 
 no Moose::Role;
 
-# register the alias ...
-package # hide me from search.cpan.org
-    Moose::Meta::Attribute::Custom::Trait::Counter;
-sub register_implementation { 'MooseX::AttributeHelpers::Trait::Counter' }
-
 1;
 
+__END__
+
+=pod
+
+=head1 NAME
+
+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<is>, I<isa>,
+I<default> or I<provides> but does use the C<Counter> metaclass,
+then this module applies defaults as in the L</SYNOPSIS>
+above. This allows for a very basic counter definition:
+
+  has 'foo' => (metaclass => 'Counter');
+  $obj->inc_foo;
+
+=head1 METHODS
+
+=over 4
+
+=item B<meta>
+
+=item B<method_provider>
+
+=item B<has_method_provider>
+
+=item B<helper_type>
+
+=item B<process_options_for_provides>
+
+Run before its superclass method.
+
+=item B<check_provides_values>
+
+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<set>
+
+Set the counter to the specified value.
+
+=item I<inc>
+
+Increments the value stored in this slot by 1. Providing an argument will
+cause the counter to be increased by specified amount.
+
+=item I<dec>
+
+Decrements the value stored in this slot by 1. Providing an argument will
+cause the counter to be increased by specified amount.
+
+=item I<reset>
+
+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 
+exception. If you find a bug please either email me, or add the bug
+to cpan-RT.
+
+=head1 AUTHOR
+
+Stevan Little E<lt>stevan@iinteractive.comE<gt>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2007-2009 by Infinity Interactive, Inc.
+
+L<http://www.iinteractive.com>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut