MooseX::AttributeHelpers::Trait::String
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers.pm
CommitLineData
22d869ff 1
2package MooseX::AttributeHelpers;
3
532b802c 4our $VERSION = '0.08';
22d869ff 5our $AUTHORITY = 'cpan:STEVAN';
6
8f7951c9 7use MooseX::AttributeHelpers::Meta::Method::Provided;
8
d56ad8bf 9use MooseX::AttributeHelpers::Trait::Counter;
e9d1a9c4 10use MooseX::AttributeHelpers::Trait::Number;
dc94988e 11use MooseX::AttributeHelpers::Trait::String;
d56ad8bf 12
22d869ff 13use MooseX::AttributeHelpers::Counter;
565fe238 14use MooseX::AttributeHelpers::Number;
190b1c02 15use MooseX::AttributeHelpers::String;
457dc4fb 16use MooseX::AttributeHelpers::Collection::List;
22d869ff 17use MooseX::AttributeHelpers::Collection::Array;
18use MooseX::AttributeHelpers::Collection::Hash;
9a976497 19use MooseX::AttributeHelpers::Collection::ImmutableHash;
20use MooseX::AttributeHelpers::Collection::Bag;
22d869ff 21
221;
23
24__END__
25
26=pod
27
28=head1 NAME
29
e295d072 30MooseX::AttributeHelpers - Extend your attribute interfaces
fa4df2e6 31
22d869ff 32=head1 SYNOPSIS
33
e295d072 34 package MyClass;
35 use Moose;
5431dff2 36 use MooseX::AttributeHelpers;
e295d072 37
5431dff2 38 has 'mapping' => (
e295d072 39 metaclass => 'Collection::Hash',
40 is => 'rw',
5431dff2 41 isa => 'HashRef[Str]',
e295d072 42 default => sub { {} },
43 provides => {
44 exists => 'exists_in_mapping',
45 keys => 'ids_in_mapping',
46 get => 'get_mapping',
47 set => 'set_mapping',
48 },
49 );
50
51 # ...
52
53 my $obj = MyClass->new;
54 $obj->set_mapping(4, 'foo');
55 $obj->set_mapping(5, 'bar');
56 $obj->set_mapping(6, 'baz');
57
58 # prints 'bar'
59 print $obj->get_mapping(5) if $obj->exists_in_mapping(5);
60
61 # prints '4, 5, 6'
62 print join ', ', $obj->ids_in_mapping;
63
22d869ff 64=head1 DESCRIPTION
65
e295d072 66While L<Moose> attributes provide you with a way to name your accessors,
67readers, writers, clearers and predicates, this library provides commonly
68used attribute helper methods for more specific types of data.
69
70As seen in the L</SYNOPSIS>, you specify the extension via the
71C<metaclass> parameter. Available meta classes are:
72
73=over
74
75=item L<Number|MooseX::AttributeHelpers::Number>
76
77Common numerical operations.
78
79=item L<Counter|MooseX::AttributeHelpers::Counter>
80
81Methods for incrementing and decrementing a counter attribute.
82
83=item L<Collection::Hash|MooseX::AttributeHelpers::Collection::Hash>
84
85Common methods for hash references.
86
87=item L<Collection::Array|MooseX::AttributeHelpers::Collection::Array>
88
89Common methods for array references.
90
72a41843 91=item L<Collection::List|MooseX::AttributeHelpers::Collection::List>
457dc4fb 92
93Common list methods for array references.
94
e295d072 95=back
96
5431dff2 97=head1 CAVEAT
98
99This is an early release of this module. Right now it is in great need
100of documentation and tests in the test suite. However, we have used this
c91a1347 101module to great success at C<$work> where it has been tested very thoroughly
5431dff2 102and deployed into a major production site.
103
104I plan on getting better docs and tests in the next few releases, but until
105then please refer to the few tests we do have and feel free email and/or
106message me on irc.perl.org if you have any questions.
107
108=head1 TODO
109
110We need tests and docs badly.
111
22d869ff 112=head1 BUGS
113
114All complex software has bugs lurking in it, and this module is no
115exception. If you find a bug please either email me, or add the bug
116to cpan-RT.
117
118=head1 AUTHOR
119
120Stevan Little E<lt>stevan@iinteractive.comE<gt>
121
5431dff2 122B<with contributions from:>
123
124Robert (rlb3) Boone
125
126Chris (perigrin) Prather
127
128Robert (phaylon) Sedlacek
129
38abf787 130Tom (dec) Lanyon
131
eca30395 132Yuval Kogman
133
22d869ff 134=head1 COPYRIGHT AND LICENSE
135
eca30395 136Copyright 2007, 2008 by Infinity Interactive, Inc.
22d869ff 137
138L<http://www.iinteractive.com>
139
140This library is free software; you can redistribute it and/or modify
141it under the same terms as Perl itself.
142
e295d072 143=cut