Add test for modify-in-place usage of ->map, as well as an example in the pod docs.
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox / Array.pm
index 03dc46b..6234435 100644 (file)
@@ -1,9 +1,9 @@
 package Moose::Autobox::Array;
 use Moose::Role 'with';
 use Perl6::Junction;
-use autobox;
+use Moose::Autobox;
 
-our $VERSION = '0.02';
+our $VERSION = '0.03';
 
 with 'Moose::Autobox::Ref',
      'Moose::Autobox::List',
@@ -117,28 +117,37 @@ sub kv {
     $array->keys->map(sub { [ $_, $array->[$_] ] });
 }
 
+sub flatten {
+    @{$_[0]}
+}
+
 ## Junctions
 
 sub all {
     my ($array) = @_;     
-    return Perl6::Junction::All->all(@$array);
+    return Perl6::Junction::all(@$array);
 }
 
 sub any {
     my ($array) = @_;     
-    return Perl6::Junction::Any->any(@$array);
+    return Perl6::Junction::any(@$array);
 }
 
 sub none {
     my ($array) = @_;     
-    return Perl6::Junction::None->none(@$array);
+    return Perl6::Junction::none(@$array);
 }
 
 sub one {
     my ($array) = @_; 
-    return Perl6::Junction::One->one(@$array);
+    return Perl6::Junction::one(@$array);
 }
 
+## Print
+
+sub print { CORE::print @{$_[0]} }
+sub say   { CORE::print @{$_[0]}, "\n" }
+
 1;
 
 __END__
@@ -152,7 +161,6 @@ Moose::Autobox::Array - the Array role
 =head1 SYNOPOSIS
 
   use Moose::Autobox;
-  use autobox;
     
   [ 1..5 ]->isa('ARRAY'); # true
   [ a..z ]->does('Moose::Autobox::Array'); # true
@@ -186,6 +194,8 @@ This is a role to describe operations on the Array type.
 
 =item B<slice (@indices)>
 
+=item B<flatten>
+
 =back
 
 =head2 Indexed implementation
@@ -222,6 +232,24 @@ This is a role to describe operations on the Array type.
 
 =item B<grep (\&block)>
 
+Note that, in both the above, $_ is in scope within the code block, as well as 
+being passed as $_[0]. As per CORE::map and CORE::grep, $_ is an alias to 
+the list value, so can be used to to modify the list, viz:
+
+    use Moose::Autobox;
+
+    my $foo = [1, 2, 3]; 
+    $foo->map( sub {$_++} ); 
+    print $foo->dump;
+
+yields
+
+   $VAR1 = [
+             2,
+             3,
+             4
+           ];
+        
 =item B<reverse>
 
 =item B<sort (?\&block)>
@@ -246,6 +274,10 @@ This is a role to describe operations on the Array type.
 
 =item B<meta>
 
+=item B<print>
+
+=item B<say>
+
 =back
 
 =head1 BUGS
@@ -260,7 +292,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006-2008 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>