add hslice
Jonathan Rockway [Thu, 17 Apr 2008 06:52:09 +0000 (06:52 +0000)]
lib/Moose/Autobox/Hash.pm
t/001_basic.t

index 0bcb420..2f58a33 100644 (file)
@@ -20,6 +20,11 @@ sub merge {
     return { %$left, %$right };
 }
 
+sub hslice {
+    my ($hash, $keys) = @_;
+    return { map { $_ => $hash->{$_} } @$keys };
+}
+
 # ::Indexed implementation
 
 sub at {
@@ -91,6 +96,10 @@ This is a role to describes a Hash value.
 Takes a hashref and returns a new hashref with right precedence
 shallow merging.
 
+=item B<hslice>
+
+Slices a hash but returns the keys and values as a new hashref.
+
 =back
 
 =head2 Indexed implementation
index 18fecd6..ebf9016 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 63;
+use Test::More tests => 64;
 
 BEGIN {
     use_ok('Moose::Autobox');
@@ -247,3 +247,7 @@ is( $h->dump,
 is_deeply( { one => 1, two => 2, three => 3 }->slice([qw/three one/]),
            [ qw/3 1/ ],
            '... hash slices ok' );
+
+is_deeply( { one => 1, two => 2, three => 3 }->hslice([qw/two three/]),
+           { two => 2, three => 3 },
+           '... hash hslices ok' );