add Bool as an attribute helper
[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
80=item L<Collection::Hash|MooseX::AttributeHelpers::Collection::Hash>
81
82Common methods for hash references.
83
84=item L<Collection::Array|MooseX::AttributeHelpers::Collection::Array>
85
86Common methods for array references.
87
72a41843 88=item L<Collection::List|MooseX::AttributeHelpers::Collection::List>
457dc4fb 89
90Common list methods for array references.
91
e295d072 92=back
93
5431dff2 94=head1 CAVEAT
95
96This is an early release of this module. Right now it is in great need
97of documentation and tests in the test suite. However, we have used this
c91a1347 98module to great success at C<$work> where it has been tested very thoroughly
5431dff2 99and deployed into a major production site.
100
101I plan on getting better docs and tests in the next few releases, but until
102then please refer to the few tests we do have and feel free email and/or
103message me on irc.perl.org if you have any questions.
104
105=head1 TODO
106
107We need tests and docs badly.
108
22d869ff 109=head1 BUGS
110
111All complex software has bugs lurking in it, and this module is no
112exception. If you find a bug please either email me, or add the bug
113to cpan-RT.
114
115=head1 AUTHOR
116
117Stevan Little E<lt>stevan@iinteractive.comE<gt>
118
5431dff2 119B<with contributions from:>
120
121Robert (rlb3) Boone
122
e8013350 123Paul (frodwith) Driver
124
125Shawn (Sartak) Moore
126
5431dff2 127Chris (perigrin) Prather
128
129Robert (phaylon) Sedlacek
130
38abf787 131Tom (dec) Lanyon
132
eca30395 133Yuval Kogman
134
22d869ff 135=head1 COPYRIGHT AND LICENSE
136
eca30395 137Copyright 2007, 2008 by Infinity Interactive, Inc.
22d869ff 138
139L<http://www.iinteractive.com>
140
141This library is free software; you can redistribute it and/or modify
142it under the same terms as Perl itself.
143
e295d072 144=cut