# NAME MouseX::AttributeHelpers - Extend your attribute interfaces # SYNOPSIS package MyClass; use Mouse; use MouseX::AttributeHelpers; has 'mapping' => ( metaclass => 'Collection::Hash', is => 'rw', isa => 'HashRef', default => sub { +{} }, provides => { exists => 'exists_in_mapping', keys => 'ids_in_mapping', get => 'get_mapping', set => 'set_mapping', }, ); package main; my $obj = MyClass->new; $obj->set_quantity(10); # quantity => 10 $obj->set_mapping(4, 'foo'); # 4 => 'foo' $obj->set_mapping(5, 'bar'); # 5 => 'bar' $obj->set_mapping(6, 'baz'); # 6 => 'baz' # prints 'bar' print $obj->get_mapping(5) if $obj->exists_in_mapping(5); # prints '4, 5, 6' print join ', ', $obj->ids_in_mapping; # DESCRIPTION MouseX::AttributeHelpers provides commonly used attribute helper methods for more specific types of data. As seen in the L, you specify the extension via the `metaclass` parameter. # PARAMETERS ## provides This points to a hashref that uses `provider` for the keys and `method` for the values. The method will be added to the object itself and do what you want. ## curries This points to a hashref that uses `provider` for the keys and has two choices for the value: You can supply `{ method => \@args }` for the values. The method will be added to the object itself (always using `@args` as the beginning arguments). Another approach to curry a method provider is to supply a coderef instead of an arrayref. The code ref takes `$self`, `$body`, and any additional arguments passed to the final method. # METHOD PROVIDERS ## L Methods for incrementing and decrementing a counter attribute. ## L Common numerical operations. ## L Common methods for string values. ## L Common methods for boolean values. ## L Common list methods for array references. ## L Common methods for array references. ## L Common methods for hash references. ## L Common additional methods for hash references. ## L Methods for incrementing and decrementing a value of collection. # AUTHOR NAKAGAWA Masaki # THANKS TO L # LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. # SEE ALSO [Mouse](http://search.cpan.org/search?mode=module&query=Mouse) [MouseX::AttributeHelpers::Counter](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Counter), [MouseX::AttributeHelpers::Number](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Number), [MouseX::AttributeHelpers::String](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::String), [MouseX::AttributeHelpers::Bool](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Bool), [MouseX::AttributeHelpers::Collection::List](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Collection::List), [MouseX::AttributeHelpers::Collection::Array](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Collection::Array), [MouseX::AttributeHelpers::Collection::ImmutableHash](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Collection::ImmutableHash), [MouseX::AttributeHelpers::Collection::Hash](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Collection::Hash), [MouseX::AttributeHelpers::Collection::Bag](http://search.cpan.org/search?mode=module&query=MouseX::AttributeHelpers::Collection::Bag) [MooseX::AttributeHelpers](http://search.cpan.org/search?mode=module&query=MooseX::AttributeHelpers)