NAME
MooX::Option - add option keywords to your Moo object
VERSION
version 0.3
MooX::Option
Use Getopt::Long::Descritive to provide command line option for your Mo/Moo/Mouse/Moose Object.
This module will add "option" which act as "has" but support additional feature for getopt.
You will have "new_with_options" to instanciate new object for command line.
METHOD
IMPORT
The import method can take option :
- %options
-
creation_chain_method : call this method after parsing option, default : new
creation_method_name : name of new method to handle option, default : new_with_options
option_chain_method : call this method to create the attribute, default : has
option_method_name : name of keyword you want to use to create your option, default : option
nofilter : don't filter extra params for MooX::Option before calling chain_method
it is usefull if you want to use this params for something else
USAGE
First of all, I use Getopt::Long::Descriptive. Everything will be pass to the programs, more specially the format.
package t;
use Moo;
use MooX::Option;
option 'test' => (is => 'ro');
1;
my $t = t->new_with_options(); #parse @ARGV
my $o = t->new_with_options(test => 'override'); #parse ARGV and override any value with the params here
The keyword "option" work exactly like the keyword "has" and take extra argument of Getopt.
EXTRA ARGS
- doc
-
Specified the documentation for the attribute
- required
-
Specified if the attribute is needed
- format
-
Format of the params. It is the same as Getopt::Long::Descriptive.
Example :
i : integer i@: array of integer s : string s@: array of string f : float value
by default, it's a boolean value.
Take a look of available format with Getopt::Long::Descriptive.
- negativable
-
add the attribute "!" to the name. It will allow negative params.
Ex :
test --quiet => quiet = 1 test --quiet --no-quiet => quiet = 0
- repeatable
-
add the attribute "@" to the name. It will allow repeatable params.
Ex :
test --verbose => verbose = 1 test --verbose --verbose => verbose = 2
- autosplit
-
auto split args to generate multiple value. You need to specified the format with "@" to make it work.
Ex :
package t; use Moo; use MooX::Option; option test => (is => 'ro', format => 'i@', autosplit => 1); 1; @ARGV=('--test=1,2,3,4'); my $t = t->new_with_options; t->test # [1,2,3,4]
- short
-
give short name of an attribute.
Ex :
package t; use Moo; use MooX::Option; option 'verbose' => (is => 'ro', repeatable => 1, short => 'v'); 1; @ARGV=('-vvv'); my $t = t->new_with_options; t->verbose # 3
THANKS
BUGS
Any bugs or evolution can be submit here :
AUTHOR
Geistteufel <geistteufel@celogeek.fr>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Geistteufel <geistteufel@celogeek.fr>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.