package Moose::Meta::Attribute::Native;
-our $VERSION = '0.89_01';
+our $VERSION = '0.99';
$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";
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<Moose> 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</SYNOPSIS>, you specify the data structure via the
-C<trait> parameter. Available meta classes are below; see L</METHOD PROVIDERS>.
+C<trait> parameter. Available traits are below; see L</METHOD PROVIDERS>.
This module used to exist as the L<MooseX::AttributeHelpers> 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<MooseX::AttributeHelpers> extension.
+the L<MooseX::AttributeHelpers> extension. L<MooseX::AttributeHelpers> should
+continue to work.
=head1 PARAMETERS
div => 'div',
mod => 'mod',
abs => 'abs',
+ # ...
}
);
handles => {
add_text => 'append',
replace_text => 'replace',
+ # ...
}
);
inc_counter => 'inc',
dec_counter => 'dec',
reset_counter => 'reset',
+ # ...
}
);
darken => 'unset',
flip_switch => 'toggle',
is_dark => 'not',
+ # ...
}
);
set_option => 'set',
get_option => 'get',
has_option => 'exists',
+ # ...
}
);
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<Code|Moose::Meta::Attribute::Native::Trait::Code>
+
+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<Moose/BUGS> for details on reporting bugs.
=head1 AUTHOR
Jesse (doy) Luehrs
+Jay Hannah
+
+Robert Buels
+
=head1 COPYRIGHT AND LICENSE
Copyright 2007-2009 by Infinity Interactive, Inc.