From: Brandon L Black Date: Mon, 2 Apr 2007 20:55:57 +0000 (+0000) Subject: support scalar cmd_aliases, so that singular aliases are not so clunky to type X-Git-Tag: 0_02~5 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Getopt.git;a=commitdiff_plain;h=61c9baa93d25ec267a2997c06e8222c425e6015a support scalar cmd_aliases, so that singular aliases are not so clunky to type --- diff --git a/lib/MooseX/Getopt/Meta/Attribute.pm b/lib/MooseX/Getopt/Meta/Attribute.pm index 634bbbb..55d1750 100644 --- a/lib/MooseX/Getopt/Meta/Attribute.pm +++ b/lib/MooseX/Getopt/Meta/Attribute.pm @@ -1,6 +1,7 @@ package MooseX::Getopt::Meta::Attribute; use Moose; +use Moose::Util::TypeConstraints; our $VERSION = '0.01'; our $AUTHORITY = 'cpan:STEVAN'; @@ -13,10 +14,20 @@ has 'cmd_flag' => ( predicate => 'has_cmd_flag', ); +# This subtype is to support scalar -> arrayref coercion +# without polluting the built-in types +subtype '_MooseX_Getopt_CmdAliases' + => as 'ArrayRef' + => where { 1 }; +coerce '_MooseX_Getopt_CmdAliases' + => from 'Value' + => via { [$_] }; + has 'cmd_aliases' => ( is => 'rw', - isa => 'ArrayRef', + isa => '_MooseX_Getopt_CmdAliases', predicate => 'has_cmd_aliases', + coerce => 1, ); no Moose; 1; @@ -42,14 +53,19 @@ MooseX::Getopt::Meta::Attribute - Optional meta attribute for custom option name is => 'ro', isa => 'Str', default => 'file.dat', + # tells MooseX::Getopt to use --somedata as the # command line flag instead of the normal # autogenerated one (--data) cmd_flag => 'somedata', + # tells MooseX::Getopt to also allow --moosedata, # -m, and -d as aliases for this same option on # the commandline. cmd_aliases => [qw/ moosedata m d /], + + # Or, you can use a plain scalar for a single alias: + cmd_aliases => 'm', ); =head1 DESCRIPTION diff --git a/t/001_basic.t b/t/001_basic.t index c7eaa36..96bb429 100644 --- a/t/001_basic.t +++ b/t/001_basic.t @@ -37,7 +37,7 @@ BEGIN { isa => 'Str', default => 'bray', cmd_flag => 'horsey', - cmd_aliases => ['x'], + cmd_aliases => 'x', ); has 'length' => (