37cc777808d6a6e2ad1a04ec803aaf2dd90624c2
[gitmo/Moose-Autobox.git] / lib / Moose / Autobox / Array.pm
1 package Moose::Autobox::Array;
2 use Moose::Role 'with';
3
4 our $VERSION = '0.01';
5
6 with 'Moose::Autobox::Ref';
7
8 sub length {
9     my ($array) = @_;
10     CORE::scalar @$array;
11 }
12
13 sub grep { 
14     my ($array, $sub) = @_; 
15     [ CORE::grep { $sub->($_) } @$array ]; 
16 }
17
18 sub map { 
19     my ($array, $sub) = @_; 
20     [ CORE::map { $sub->($_) } @$array ]; 
21 }
22
23 sub join { 
24     my ($array, $sep) = @_;     
25     CORE::join $sep, @$array; 
26 }
27
28 sub reverse { 
29     my ($array) = @_;
30     [ CORE::reverse @{$array} ];
31 }
32
33 sub sort { 
34     my ($array, $sub) = @_;     
35     $sub ||= sub { $a cmp $b }; 
36     [ CORE::sort { $sub->($a, $b) } @$array ]; 
37 }
38
39 sub pop { 
40     my ($array) = @_;    
41     CORE::pop @{$array}; 
42 }
43
44 sub push { 
45     my ($array, @rest) = @_;
46     CORE::push @$array, @rest;  
47     $array; 
48 }
49
50 sub unshift { 
51     my ($array, @rest) = @_;    
52     CORE::unshift @{$array}, @rest; 
53     $array; 
54 }
55 sub exists {
56     my ($array, $index) = @_;    
57     CORE::exists $array->[$index];    
58 }
59
60 sub delete { 
61     my ($array, $index) = @_;    
62     CORE::delete $array->[$index];
63 }
64
65 sub shift { 
66     my ($array) = @_;    
67     CORE::shift @$array; 
68 }
69
70 1;