/usr/local/CPAN/Verby/Verby/Step/Simple.pm
#!/usr/bin/perl
package Verby::Step::Simple;
use Moose::Role;
use Scalar::Util qw/refaddr/;
with qw/Verby::Step/;
use MooseX::AttributeHelpers;
sub depends {} # FIXME Moose::Role
has depends => (
isa => "ArrayRef[Verby::Step]",
metaclass => "Collection::Array",
is => "rw",
default => sub { [] },
auto_deref => 1,
provides => {
clear => "clear_deps",
},
);
has action => (
isa => "Object", # "Verby::Action",
is => "rw",
);
sub add_deps {
my $self = shift;
my %seen;
$self->depends([ grep { !$seen{refaddr $_}++ } @{ $self->depends }, @_ ]);
}
sub is_satisfied {
my ( $self, $c, @args ) = @_;
$self->action->verify( $c, @args );
}
__PACKAGE__;
__END__