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

index 8000d29..0bcb420 100644 (file)
@@ -3,7 +3,7 @@ use Moose::Role 'with';
 
 use Carp qw(croak);
 
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 with 'Moose::Autobox::Ref',
      'Moose::Autobox::Indexed';
@@ -52,6 +52,11 @@ sub kv {
     [ CORE::map { [ $_, $hash->{$_} ] } CORE::keys %$hash ];    
 }
 
+sub slice {
+    my ($hash, $keys) = @_;
+    return [ @{$hash}{@$keys} ];
+};
+
 sub print   { CORE::print %{$_[0]} }
 sub say     { CORE::print %{$_[0]}, "\n" }
 
@@ -104,6 +109,8 @@ shallow merging.
 
 =item B<kv>
 
+=item B<slice>
+
 =back
 
 =over 4
index 414531b..feb0174 100644 (file)
@@ -9,6 +9,7 @@ requires 'exists';
 requires 'keys';
 requires 'values'; 
 requires 'kv';
+requires 'slice';
 
 1;
 
@@ -74,4 +75,4 @@ L<http://www.iinteractive.com>
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.
 
-=cut
\ No newline at end of file
+=cut
index dd6c4af..18fecd6 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 62;
+use Test::More tests => 63;
 
 BEGIN {
     use_ok('Moose::Autobox');
@@ -244,3 +244,6 @@ is( $h->dump,
     $h->perl,
     '... the value is correctly dumped with perl()' );
 
+is_deeply( { one => 1, two => 2, three => 3 }->slice([qw/three one/]),
+           [ qw/3 1/ ],
+           '... hash slices ok' );