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