All unit tests passing with refactored stuff, documentation updated significantly.
[gitmo/MooseX-AttributeHelpers.git] / lib / MooseX / AttributeHelpers / MethodProvider / ImmutableHash.pm
index 1cf5123..ede39d8 100644 (file)
@@ -6,18 +6,14 @@ our $AUTHORITY = 'cpan:STEVAN';
 
 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} 
     };
 }
 
@@ -46,11 +42,22 @@ sub count : method {
     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__
@@ -66,32 +73,49 @@ MooseX::AttributeHelpers::MethodProvider::ImmutableHash
 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