The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Webservice::InterMine::Constraint::Multi;

use Moose;

extends 'Webservice::InterMine::Constraint';
with 'Webservice::InterMine::Constraint::Role::Operator';

use Webservice::InterMine::Types qw(MultiOperator);
use MooseX::Types::Moose qw(ArrayRef Str);

has '+op' => ( isa => MultiOperator, coerce => 1 );

has 'values' => (
    is       => 'ro',
    isa      => ArrayRef [Str],
    required => 1,
);

override to_string => sub {
    my $self = shift;
    return join( ' ',
        super(), $self->op,
        '"' . join( ', ', @{ $self->values } ) . '"' );
};

override to_hash => sub {
    my $self = shift;
    return super, $self->operator_hash_bits, ( value => $self->values );
};

__PACKAGE__->meta->make_immutable;
no Moose;
1;