foo
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox / Hash.pm
CommitLineData
5f654d8e 1package Moose::Autobox::Hash;
2use Moose::Role 'with';
3
4our $VERSION = '0.01';
5
6cf5bcf2 6with 'Moose::Autobox::Ref',
7 'Moose::Autobox::Indexed';
8
9sub delete {
10 my ($hash, $key) = @_;
11 CORE::delete $hash->{$key};
12}
13
14# ::Indexed implementation
5f654d8e 15
31d40d73 16sub at {
17 my ($hash, $index) = @_;
18 $hash->{$index};
19}
20
21sub put {
22 my ($hash, $index, $value) = @_;
23 $hash->{$index} = $value;
24}
25
5f654d8e 26sub exists {
27 my ($hash, $key) = @_;
28 CORE::exists $hash->{$key};
29}
e6bb88b0 30
5f654d8e 31sub keys {
32 my ($hash) = @_;
e6bb88b0 33 [ CORE::keys %$hash ];
5f654d8e 34}
35
36sub values {
37 my ($hash) = @_;
e6bb88b0 38 [ CORE::values %$hash ];
39}
40
41sub kv {
42 my ($hash) = @_;
43 [ CORE::map { [ $_, $hash->{$_} ] } CORE::keys %$hash ];
5f654d8e 44}
45
31d40d73 461;
47
48__END__
49
50=pod
51
52=head1 NAME
53
54Moose::Autobox::Hash - the Hash role
55
56=head1 SYNOPOSIS
57
58 use Moose::Autobox;
59 use autobox;
60
61 { one => 1, two => 2 }->keys->join(', ')->print; # prints 'one, two'
62
63=head1 DESCRIPTION
64
260cc81f 65=head1 METHODS
66
67=over 4
68
69=item B<meta>
70
71=item B<delete>
72
73=back
74
75=head2 Indexed
76
77=over 4
78
79=item B<at>
80
81=item B<put>
82
83=item B<exists>
84
85=item B<keys>
86
87=item B<values>
88
89=item B<kv>
90
91=back
92
31d40d73 93=head1 BUGS
94
95All complex software has bugs lurking in it, and this module is no
96exception. If you find a bug please either email me, or add the bug
97to cpan-RT.
98
99=head1 AUTHOR
100
101Stevan Little E<lt>stevan@iinteractive.comE<gt>
102
103=head1 COPYRIGHT AND LICENSE
104
105Copyright 2006 by Infinity Interactive, Inc.
106
107L<http://www.iinteractive.com>
108
109This library is free software; you can redistribute it and/or modify
110it under the same terms as Perl itself.
111
112=cut