X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FAutobox%2FHash.pm;h=de8f2bbe5b33e74877cdca334ae7003b61a96978;hb=2197a7c093124739caaae6be7b9ae213daefb598;hp=0bcb420c95a8f8ef90c16ea61c79da916ee34c59;hpb=18ef6e1c6698a79fb754a81ee1277c8d9bef80f9;p=gitmo%2FMoose-Autobox.git diff --git a/lib/Moose/Autobox/Hash.pm b/lib/Moose/Autobox/Hash.pm index 0bcb420..de8f2bb 100644 --- a/lib/Moose/Autobox/Hash.pm +++ b/lib/Moose/Autobox/Hash.pm @@ -1,8 +1,6 @@ package Moose::Autobox::Hash; use Moose::Role 'with'; -use Carp qw(croak); - our $VERSION = '0.03'; with 'Moose::Autobox::Ref', @@ -15,11 +13,20 @@ sub delete { sub merge { my ($left, $right) = @_; - croak "You must pass a hashref as argument to merge" + Carp::confess "You must pass a hashref as argument to merge" unless ref $right eq 'HASH'; return { %$left, %$right }; } +sub hslice { + my ($hash, $keys) = @_; + return { map { $_ => $hash->{$_} } @$keys }; +} + +sub flatten { + return %{$_[0]} +} + # ::Indexed implementation sub at { @@ -91,6 +98,12 @@ This is a role to describes a Hash value. Takes a hashref and returns a new hashref with right precedence shallow merging. +=item B + +Slices a hash but returns the keys and values as a new hashref. + +=item B + =back =head2 Indexed implementation