Change documention for get and get to reflect actual behavior.
[gitmo/Moose.git] / lib / Moose / Meta / Attribute / Native / Trait / Hash.pm
CommitLineData
e3c07b19 1
c466e58f 2package Moose::Meta::Attribute::Native::Trait::Hash;
e3c07b19 3use Moose::Role;
4
9039e8ec 5our $VERSION = '0.89_01';
e3c07b19 6$VERSION = eval $VERSION;
7our $AUTHORITY = 'cpan:STEVAN';
8
c466e58f 9use Moose::Meta::Attribute::Native::MethodProvider::Hash;
e3c07b19 10
c466e58f 11with 'Moose::Meta::Attribute::Native::Trait';
e3c07b19 12
13has 'method_provider' => (
14 is => 'ro',
15 isa => 'ClassName',
16 predicate => 'has_method_provider',
c466e58f 17 default => 'Moose::Meta::Attribute::Native::MethodProvider::Hash'
e3c07b19 18);
19
2e069f5a 20sub _helper_type { 'HashRef' }
e3c07b19 21
22no Moose::Role;
23
e3c07b19 241;
25
26__END__
27
28=pod
29
30=head1 NAME
31
c466e58f 32Moose::Meta::Attribute::Native::Trait::Hash
e3c07b19 33
34=head1 SYNOPSIS
35
36 package Stuff;
37 use Moose;
e3c07b19 38
39 has 'options' => (
96fd0bec 40 traits => ['Hash'],
e3c07b19 41 is => 'ro',
42 isa => 'HashRef[Str]',
43 default => sub { {} },
5f3663b2 44 handles => {
af44c00c 45 set_option => 'set',
46 get_option => 'get',
bb023e15 47 has_no_options => 'is_empty',
af44c00c 48 num_options => 'count',
49 delete_option => 'delete',
8396a437 50 pairs => 'kv',
9610c1d2 51 },
e3c07b19 52 );
53
54=head1 DESCRIPTION
55
56This module provides a Hash attribute which provides a number of
8396a437 57hash-like operations.
96fd0bec 58
59=head1 PROVIDED METHODS
60
61These methods are implemented in
62L<Moose::Meta::Attribute::Native::MethodProvider::Hash>.
63
64=over 4
65
85592815 66=item B<get($key, $key2, $key3...)>
96fd0bec 67
85592815 68Returns values from the hash.
96fd0bec 69
85592815 70In list context return a list of values in the hash for the given keys.
71In scalar context returns the value for the last key specified.
96fd0bec 72
85592815 73=item B<set($key => $value, $key2 => $value2 ...)>
74
75Sets the elements in the hash to the given values.
96fd0bec 76
8396a437 77=item B<delete($key)>
96fd0bec 78
8396a437 79Removes the element with the given key.
96fd0bec 80
8396a437 81=item B<keys>
96fd0bec 82
8396a437 83Returns the list of keys in the hash.
96fd0bec 84
8396a437 85=item B<exists($key)>
96fd0bec 86
8396a437 87Returns true if the given key is present in the hash.
96fd0bec 88
8396a437 89=item B<defined($key)>
96fd0bec 90
8396a437 91Returns true if the value of a given key is defined.
96fd0bec 92
93=item B<values>
94
95Returns the list of values in the hash.
96
97=item B<kv>
98
8396a437 99Returns the key/value pairs in the hash as an array of array references.
100
101 for my $pair ( $object->options->pairs ) {
102 print "$pair->[0] = $pair->[1]\n";
103 }
96fd0bec 104
105=item B<elements>
106
8396a437 107Returns the key/value pairs in the hash as a flattened list..
96fd0bec 108
8396a437 109=item B<clear>
96fd0bec 110
8396a437 111Resets the hash to an empty value, like C<%hash = ()>.
96fd0bec 112
8396a437 113=item B<count>
96fd0bec 114
8396a437 115Returns the number of elements in the hash.
96fd0bec 116
bb023e15 117=item B<is_empty>
96fd0bec 118
8396a437 119If the hash is populated, returns false. Otherwise, returns true.
96fd0bec 120
121=item B<accessor>
122
8396a437 123If passed one argument, returns the value of the specified key. If passed two
124arguments, sets the value of the specified key.
96fd0bec 125
126=back
e3c07b19 127
128=head1 METHODS
129
130=over 4
131
132=item B<meta>
133
134=item B<method_provider>
135
136=item B<has_method_provider>
137
e3c07b19 138=back
139
140=head1 BUGS
141
142All complex software has bugs lurking in it, and this module is no
143exception. If you find a bug please either email me, or add the bug
144to cpan-RT.
145
146=head1 AUTHOR
147
148Stevan Little E<lt>stevan@iinteractive.comE<gt>
149
150=head1 COPYRIGHT AND LICENSE
151
152Copyright 2007-2009 by Infinity Interactive, Inc.
153
154L<http://www.iinteractive.com>
155
156This library is free software; you can redistribute it and/or modify
157it under the same terms as Perl itself.
158
159=cut