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