package Net::Riak::MapReducePhase; use Moose; use Scalar::Util; use JSON; has type => (is => 'rw', isa => 'Str', required => 1,); has function => (is => 'ro', isa => 'Str', required => 1); has arg => (is => 'ro', isa => 'ArrayRef', default => 'None'); has language => (is => 'ro', isa => 'Str', default => 'javascript'); has keep => (is => 'rw', isa => 'JSON::Boolean', default => sub {JSON::false}); sub to_array { my $self = shift; my $step_def = { keep => $self->keep, language => $self->language, arg => $self->arg }; if ($self->function =~ m!\{!) { $step_def->{source} = $self->function; }else{ $step_def->{name} = $self->function; } return {$self->type => $step_def}; } 1;