Dallycot
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Dallycot/Value/Vector.pm view on Meta::CPAN
package Dallycot::Value::Vector;
our $AUTHORITY = 'cpan:JSMITH';
# ABSTRACT: A finite length, in-memory ordered set of values
use strict;
use warnings;
use utf8;
use parent 'Dallycot::Value::Collection';
use Promises qw(deferred collect);
sub new {
my ( $class, @values ) = @_;
$class = ref $class || $class;
return bless \@values => $class;
}
sub values {
@{$_[0]};
}
sub is_empty {
my ($self) = @_;
return @$self == 0;
}
sub to_rdf {
my($self, $model) = @_;
$model -> list(map { $_ -> to_rdf($model) } @$self);
}
sub is_defined { return 1 }
sub as_text {
my ($self) = @_;
return
"< "
. join( ", ", map { defined($_) ? ( ( $_ eq $self ) ? '(self)' : $_->as_text ) : '(undef)' } @$self )
. " >";
}
sub prepend {
my ( $self, @things ) = @_;
return bless [ @things, @$self ] => __PACKAGE__;
}
sub calculate_length {
my ( $self, $engine ) = @_;
return Dallycot::Value::Numeric->new( scalar @$self );
}
sub calculate_reverse {
my ( $self, $engine ) = @_;
my $d = deferred;
$d->resolve( $self->new( reverse @$self ) );
return $d->promise;
}
sub apply_map {
my ( $self, $engine, $transform ) = @_;
return collect( map { $transform->apply( $engine, {}, $_ ) } @$self )->then(
sub {
my @values = map {@$_} @_;
bless \@values => __PACKAGE__;
}
);
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.604 second using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )