package Moose::Meta::Attribute::Native::Trait::Hash;
use Moose::Role;
-our $VERSION = '0.89';
+our $VERSION = '1.19';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
-use Moose::Meta::Attribute::Native::MethodProvider::Hash;
-
with 'Moose::Meta::Attribute::Native::Trait';
-has 'method_provider' => (
- is => 'ro',
- isa => 'ClassName',
- predicate => 'has_method_provider',
- default => 'Moose::Meta::Attribute::Native::MethodProvider::Hash'
-);
-
sub _helper_type { 'HashRef' }
no Moose::Role;
=head1 NAME
-Moose::Meta::Attribute::Native::Trait::Hash
+Moose::Meta::Attribute::Native::Trait::Hash - Helper trait for HashRef attributes
=head1 SYNOPSIS
isa => 'HashRef[Str]',
default => sub { {} },
handles => {
- set_option => 'set',
- get_option => 'get',
- has_options => 'empty',
- num_options => 'count',
- delete_option => 'delete',
- }
+ set_option => 'set',
+ get_option => 'get',
+ has_no_options => 'is_empty',
+ num_options => 'count',
+ delete_option => 'delete',
+ option_pairs => 'kv',
+ },
);
=head1 DESCRIPTION
-This module provides a Hash attribute which provides a number of
-hash-like operations.
+This trait provides native delegation methods for array references.
=head1 PROVIDED METHODS
-These methods are implemented in
-L<Moose::Meta::Attribute::Native::MethodProvider::Hash>.
-
=over 4
-=item B<count>
+=item B<get($key, $key2, $key3...)>
-Returns the number of elements in the list.
+Returns values from the hash.
-=item B<empty>
+In list context it returns a list of values in the hash for the given keys. In
+scalar context it returns the value for the last key specified.
-If the list is populated, returns true. Otherwise, returns false.
+This method requires at least one argument.
-=item B<exists>
+=item B<set($key =E<gt> $value, $key2 =E<gt> $value2...)>
-Returns true if the given key is present in the hash
+Sets the elements in the hash to the given values. It returns the new values
+set for each key, in the same order as the keys passed to the method.
-=item B<defined>
+This method requires at least two arguments, and expects an even number of
+arguments.
-Returns true if the value of a given key is defined
+=item B<delete($key, $key2, $key3...)>
-=item B<get>
+Removes the elements with the given keys.
-Returns an element of the hash by its key.
+In list context it returns a list of values in the hash for the deleted
+keys. In scalar context it returns the value for the last key specified.
=item B<keys>
Returns the list of keys in the hash.
+This method does not accept any arguments.
+
+=item B<exists($key)>
+
+Returns true if the given key is present in the hash.
+
+This method requires a single argument.
+
+=item B<defined($key)>
+
+Returns true if the value of a given key is defined.
+
+This method requires a single argument.
+
=item B<values>
Returns the list of values in the hash.
+This method does not accept any arguments.
+
=item B<kv>
-Returns the key, value pairs in the hash as array references
+Returns the key/value pairs in the hash as an array of array references.
-=item B<elements>
+ for my $pair ( $object->options->pairs ) {
+ print "$pair->[0] = $pair->[1]\n";
+ }
-Returns the key, value pairs in the hash as a flattened list
+This method does not accept any arguments.
-=item B<delete>
+=item B<elements>
+
+Returns the key/value pairs in the hash as a flattened list..
-Removes the element with the given key
+This method does not accept any arguments.
=item B<clear>
-Unsets the hash entirely.
+Resets the hash to an empty value, like C<%hash = ()>.
+
+This method does not accept any arguments.
+
+=item B<count>
+
+Returns the number of elements in the hash. Also useful for not empty:
+C<< has_options => 'count' >>.
-=item B<set>
+This method does not accept any arguments.
-Sets the element in the hash at the given key to the given value.
+=item B<is_empty>
-=item B<accessor>
+If the hash is populated, returns false. Otherwise, returns true.
-If passed one argument, returns the value of the requested key. If passed two
-arguments, sets the value of the requested key.
+This method does not accept any arguments.
+
+=item B<accessor($key)>
+
+=item B<accessor($key, $value)>
+
+If passed one argument, returns the value of the specified key. If passed two
+arguments, sets the value of the specified key.
+
+When called as a setter, this method returns the value that was set.
=back
=item B<meta>
-=item B<method_provider>
-
-=item B<has_method_provider>
-
=back
=head1 BUGS
-All complex software has bugs lurking in it, and this module is no
-exception. If you find a bug please either email me, or add the bug
-to cpan-RT.
+See L<Moose/BUGS> for details on reporting bugs.
=head1 AUTHOR