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