| MooseX-Declare documentation | Contained in the MooseX-Declare distribution. |
MooseX::Declare::Syntax::OptionHandling - Option parser dispatching
This role will call a add_foo_option_customization for every foo option
that is discovered.
List[Str] Object->ignored_options ()
This method returns a list of option names that won't be dispatched. By default
this only contains the is option.
Str Object->get_identifier ()
This must return the name of the current keyword's identifier.
Object->add_optional_customizations (Object $context, Str $package, HashRef $options)
This will dispatch to the respective add_*_option_customization method for option
handling unless the option is listed in the ignored_options.
This software is copyright (c) 2010 by Florian Ragwitz.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| MooseX-Declare documentation | Contained in the MooseX-Declare distribution. |
package MooseX::Declare::Syntax::OptionHandling; BEGIN { $MooseX::Declare::Syntax::OptionHandling::AUTHORITY = 'cpan:FLORA'; } BEGIN { $MooseX::Declare::Syntax::OptionHandling::VERSION = '0.34'; } # ABSTRACT: Option parser dispatching use Moose::Role; use Carp qw( croak ); use namespace::clean -except => 'meta'; requires qw( get_identifier ); sub ignored_options { qw( is ) } after add_optional_customizations => sub { my ($self, $ctx, $package) = @_; my $options = $ctx->options; # ignored options my %ignored = map { ($_ => 1) } $self->ignored_options; # try to find a handler for each option for my $option (keys %$options) { next if $ignored{ $option }; # call the handler with its own value and all options if (my $method = $self->can("add_${option}_option_customizations")) { $self->$method($ctx, $package, $options->{ $option }, $options); } # no handler method was found else { croak sprintf q/The '%s' keyword does not know what to do with an '%s' option/, $self->get_identifier, $option; } } return 1; }; 1; __END__