sub exists : method {
my ($attr, $reader, $writer) = @_;
- return sub { CORE::exists $reader->($_[0])->{$_[1]} ? 1 : 0 };
+ return sub { CORE::exists $reader->($_[0])->{$_[1]} };
}
sub get : method {
my ($attr, $reader, $writer) = @_;
- return sub {
- if ( @_ == 2 ) {
- $reader->($_[0])->{$_[1]}
- } else {
- my ( $self, @keys ) = @_;
- @{ $reader->($self) }{@keys}
- }
+ return sub {
+ my ($self, @keys) = @_;
+ @{ $reader->($self) }{@keys}
};
}
return sub { scalar CORE::keys %{$reader->($_[0])} };
}
+# Deprecated. The author was thinking backwardsly when this was written.
sub empty : method {
my ($attr, $reader, $writer) = @_;
return sub { scalar CORE::keys %{$reader->($_[0])} ? 1 : 0 };
}
+sub is_empty : method {
+ my ($attr, $reader, $writer) = @_;
+ return sub { CORE::keys %{$reader->($_[0])} == 0 };
+}
+
+sub has_items : method {
+ my ($attr, $reader, $writer) = @_;
+ return sub { CORE::keys %{$reader->($_[0])} > 0 };
+}
+
1;
__END__
This is a role which provides the method generators for
L<MooseX::AttributeHelpers::Collection::ImmutableHash>.
-=head1 METHODS
+=head1 PROVIDED METHODS
=over 4
-=item B<meta>
+=item B<count>
-=back
+Returns the number of items in the hash.
-=head1 PROVIDED METHODS
+=item B<empty>
-=over 4
+DEPRECATED. This was a misleading name for what it does (returns a boolean
+indicating whether the hash is NOT empty), but we're keeping it for backwards
+compatibility. Do not use it in new code. Use is_empty or has_items instead,
+depending on what you meant.
-=item B<count>
+=item B<is_empty>
-=item B<empty>
+Returns a boolean which is true if and only if the hash has no items in it.
+
+=item B<has_items>
+
+Returns a boolean which is true if and only if the hash has at least one item.
=item B<exists>
-=item B<get>
+L<perlfunc/exists>
+
+=item B<get(@keys)>
+
+Gets the values specified by @keys from the hash.
=item B<keys>
+L<perlfunc/keys>
+
=item B<values>
+L<perlfunc/values>
+
=item B<kv>
+Returns a list of arrayrefs, each of which is a key => value pair mapping.
+
=back
=head1 BUGS