Just haven't commited this yet, and it has a lot of work in it.
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers / Counter.pm
index 2da3971..d1d42f1 100644 (file)
@@ -1,52 +1,27 @@
 
 package MooseX::AttributeHelpers::Counter;
 use Moose;
+use MooseX::AttributeHelpers::Sugar;
+
+extends 'MooseX::AttributeHelpers::Base';
 
 our $VERSION   = '0.03';
 our $AUTHORITY = 'cpan:STEVAN';
 
-use MooseX::AttributeHelpers::MethodProvider::Counter;
-
-extends 'MooseX::AttributeHelpers::Base';
+define_attribute_helper (
+    default_options  => {
+        is      => 'ro', 
+        default => 0,
+    },
 
-has '+method_provider' => (
-    default => 'MooseX::AttributeHelpers::MethodProvider::Counter'
+    helper_type      => 'Num',
+    method_provider  => 'MooseX::AttributeHelpers::MethodProvider::Counter',
+    auto_provide     => 1,
+    shortcut         => '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} = $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);
-        }
-    }
-};
-
 no Moose;
-
-# register the alias ...
-package # hide me from search.cpan.org
-    Moose::Meta::Attribute::Custom::Counter;
-sub register_implementation { 'MooseX::AttributeHelpers::Counter' }
+no MooseX::AttributeHelpers::Sugar;
 
 1;
 
@@ -99,22 +74,6 @@ above. This allows for a very basic counter definition:
 
 =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