package Moose::Meta::Attribute::Native;
-our $VERSION = '0.87';
+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";
ids_in_mapping => 'keys',
get_mapping => 'get',
set_mapping => 'set',
- set_quantity => [ set => [ 'quantity' ] ],
+ set_quantity => [ set => 'quantity' ],
},
);
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 you with a way to name your accessors,
-readers, writers, clearers and predicates, this library provides commonly
+While L<Moose> attributes provide a way to name your accessors, readers,
+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 extension via the
-C<trait> parameter. Available meta classes are below; see L</METHOD PROVIDERS>.
+As seen in the L</SYNOPSIS>, you specify the data structure via the
+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
Common numerical operations.
has 'integer' => (
- metaclass => 'Number',
+ traits => ['Number'],
is => 'ro',
isa => 'Int',
default => 5,
- handles => {
+ handles => {
set => 'set',
add => 'add',
sub => 'sub',
div => 'div',
mod => 'mod',
abs => 'abs',
+ # ...
}
);
Common methods for string operations.
has 'text' => (
- metaclass => 'String',
+ traits => ['String'],
is => 'rw',
isa => 'Str',
default => q{},
- handles => {
+ handles => {
add_text => 'append',
replace_text => 'replace',
+ # ...
}
);
Methods for incrementing and decrementing a counter attribute.
has 'counter' => (
- traits => ['Counter'],
+ traits => ['Counter'],
is => 'ro',
isa => 'Num',
default => 0,
inc_counter => 'inc',
dec_counter => 'dec',
reset_counter => 'reset',
+ # ...
}
);
Common methods for boolean values.
has 'is_lit' => (
- traits => ['Bool'],
+ traits => ['Bool'],
is => 'rw',
isa => 'Bool',
default => 0,
darken => 'unset',
flip_switch => 'toggle',
is_dark => 'not',
+ # ...
}
);
-
=item L<Hash|Moose::Meta::Attribute::Native::Trait::Hash>
Common methods for hash references.
isa => 'HashRef[Str]',
default => sub { {} },
handles => {
- set_option => 'set',
- get_option => 'get',
- has_option => 'exists',
+ 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.