Commit | Line | Data |
5f654d8e |
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; |