X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FAttribute%2FNative.pm;h=25dcb78d617b5059614b8690df65e5befb502a4b;hb=c53c3ec7350a5fc4699ca6053221bc02e60d02d5;hp=aef1486da395479947b26b1618964da90ed4c83f;hpb=9958cbe1b4315421ae21a7b8e23689f5d167ae21;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Attribute/Native.pm b/lib/Moose/Meta/Attribute/Native.pm index aef1486..25dcb78 100644 --- a/lib/Moose/Meta/Attribute/Native.pm +++ b/lib/Moose/Meta/Attribute/Native.pm @@ -1,10 +1,10 @@ package Moose::Meta::Attribute::Native; -our $VERSION = '0.89'; +our $VERSION = '1.05'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; -my @trait_names = qw(Bool Counter Number String Array Hash); +my @trait_names = qw(Bool Counter Number String Array Hash Code); for my $trait_name (@trait_names) { my $trait_class = "Moose::Meta::Attribute::Native::Trait::$trait_name"; @@ -51,7 +51,7 @@ Moose::Meta::Attribute::Native - Extend your attribute interfaces ids_in_mapping => 'keys', get_mapping => 'get', set_mapping => 'set', - set_quantity => [ set => [ 'quantity' ] ], + set_quantity => [ set => 'quantity' ], }, ); @@ -60,30 +60,31 @@ Moose::Meta::Attribute::Native - Extend your attribute interfaces 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' + $obj->set_mapping('foo', 4); # foo => 4 + $obj->set_mapping('bar', 5); # bar => 5 + $obj->set_mapping('baz', 6); # baz => 6 - # prints 'bar' - print $obj->get_mapping(5) if $obj->exists_in_mapping(5); + # prints 5 + print $obj->get_mapping('bar') if $obj->exists_in_mapping('bar'); - # prints '4, 5, 6' + # prints 'quantity, foo, bar, baz' print join ', ', $obj->ids_in_mapping; =head1 DESCRIPTION While L attributes provide a way to name your accessors, readers, -writers, clearers and predicates, this library provides commonly +writers, clearers and predicates, this set of traits provides commonly used attribute helper methods for more specific types of data. As seen in the L, you specify the data structure via the -C parameter. Available meta classes are below; see L. +C parameter. Available traits are below; see L. This module used to exist as the L extension. It was very commonly used, so we moved it into core Moose. Since this gave us a chance to change the interface, you will have to change your code or continue using -the L extension. +the L extension. L should +continue to work. =head1 PARAMETERS @@ -115,6 +116,7 @@ Common numerical operations. div => 'div', mod => 'mod', abs => 'abs', + # ... } ); @@ -130,6 +132,7 @@ Common methods for string operations. handles => { add_text => 'append', replace_text => 'replace', + # ... } ); @@ -146,6 +149,7 @@ Methods for incrementing and decrementing a counter attribute. inc_counter => 'inc', dec_counter => 'dec', reset_counter => 'reset', + # ... } ); @@ -163,6 +167,7 @@ Common methods for boolean values. darken => 'unset', flip_switch => 'toggle', is_dark => 'not', + # ... } ); @@ -179,6 +184,7 @@ Common methods for hash references. set_option => 'set', get_option => 'get', has_option => 'exists', + # ... } ); @@ -187,23 +193,37 @@ Common methods for hash references. Common methods for array references. has 'queue' => ( - traits => ['Array'], - is => 'ro', - isa => 'ArrayRef[Str]', - default => sub { [] }, - handles => { - add_item => 'push', - next_item => 'shift', - } + traits => ['Array'], + is => 'ro', + isa => 'ArrayRef[Str]', + default => sub { [] }, + handles => { + add_item => 'push', + next_item => 'shift', + # ... + } + ); + +=item L + +Common methods for code references. + + has 'callback' => ( + traits => ['Code'], + is => 'ro', + isa => 'CodeRef', + default => sub { sub { 'called' } }, + handles => { + call => 'execute', + # ... + } ); =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. +See L for details on reporting bugs. =head1 AUTHOR @@ -235,6 +255,10 @@ Evan Carroll Jesse (doy) Luehrs +Jay Hannah + +Robert Buels + =head1 COPYRIGHT AND LICENSE Copyright 2007-2009 by Infinity Interactive, Inc.