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