package Moose::Meta::Attribute::Native::MethodProvider::Array;
use Moose::Role;
+use List::Util;
+use List::MoreUtils;
+
our $VERSION = '0.89';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
my ( $attr, $reader, $writer ) = @_;
return sub {
my ( $instance, $predicate ) = @_;
- foreach my $val ( @{ $reader->($instance) } ) {
- local $_ = $val;
- return $val if $predicate->();
- }
- return;
+ &List::Util::first($predicate, @{ $reader->($instance) });
};
}
};
}
+sub reduce : method {
+ my ( $attr, $reader, $writer ) = @_;
+ return sub {
+ my ( $instance, $f ) = @_;
+ our ($a, $b);
+ List::Util::reduce { $f->($a, $b) } @{ $reader->($instance) };
+ };
+}
+
sub sort : method {
my ( $attr, $reader, $writer ) = @_;
return sub {
};
}
+sub shuffle : method {
+ my ( $attr, $reader, $writer ) = @_;
+ return sub {
+ my ( $instance ) = @_;
+ List::Util::shuffle @{ $reader->($instance) };
+ };
+}
+
sub grep : method {
my ( $attr, $reader, $writer ) = @_;
return sub {
};
}
+sub uniq : method {
+ my ( $attr, $reader, $writer ) = @_;
+ return sub {
+ my ( $instance ) = @_;
+ List::MoreUtils::uniq @{ $reader->($instance) };
+ };
+}
+
sub elements : method {
my ( $attr, $reader, $writer ) = @_;
return sub {
};
}
+sub natatime : method {
+ my ( $attr, $reader, $writer ) = @_;
+ return sub {
+ my ( $instance, $n, $f ) = @_;
+ my $it = List::MoreUtils::natatime($n, @{ $reader->($instance) });
+ if ($f) {
+ while (my @vals = $it->()) {
+ $f->(@vals);
+ }
+ }
+ $it;
+ };
+}
+
1;
__END__