Catmandu
view release on metacpan or search on metacpan
lib/Catmandu/Fix/Has.pm view on Meta::CPAN
$args->{$key} = shift;
}
my $orig_args = $self->$orig(@_);
for my $arg (@$fix_opts) {
my $key = $arg->{key};
if ($arg->{collect}) {
$args->{$key} = $orig_args;
last;
}
elsif (exists $orig_args->{"-$key"}) {
$args->{$key} = delete $orig_args->{"-$key"};
}
elsif (exists $orig_args->{$key}) {
$args->{$key} = delete $orig_args->{$key};
}
}
$args;
}
);
}
1;
__END__
=pod
=head1 NAME
Catmandu::Fix::Has - helper class for creating Fix-es with (optional) parameters
=head1 SYNOPSIS
package Catmandu::Fix::foo;
use Moo;
use Catmandu::Fix::Has;
has greeting => (fix_arg => 1); # required parameter 1
has message => (fix_arg => 1); # required parameter 2
has eol => (fix_opt => 1 , default => sub {'!'} ); # optional parameter 'eol' with default '!'
sub fix {
my ($self,$data) = @_;
print STDERR $self->greeting . ", " . $self->message . $self->eol . "\n";
$data;
}
1;
=head1 PARAMETERS
=over 4
=item fix_arg
Required argument when set to 1. The Fix containing the code fragment below needs
two arguments.
use Catmandu::Fix::Has;
has message => (fix_arg => 1); # required parameter 1
has number => (fix_arg => 1); # required parameter 2
When the fix_arg is set to 'collect', then all arguments are read into an
array. The Fix containing the code fragment below needs at least 1 or more
arguments. All arguments will get collected into the C<messages> array:
use Catmandu::Fix::Has;
has messages => (fix_arg => 'collect'); # required parameter
=item fix_opt
Optional named argument when set to 1. The Fix containing the code fragment
below can have two optional arguments C<message: ...>, C<number: ...>:
use Catmandu::Fix::Has;
has message => (fix_opt => 1); # optional parameter 1
has number => (fix_opt => 1); # optional parameter 2
When the fix_opt is set to 'collect', then all optional argument are read into
an array. The Fix containing the code fragment below needs at least 1 or more
arguments. All arguments will get collected into the C<options> array:
use Catmandu::Fix::Has;
has options => (fix_opt => 'collect'); # optional parameter
=back
=head1 SEE ALSO
L<Catmandu::Fix>
=cut
( run in 1.565 second using v1.01-cache-2.11-cpan-364913b4093 )