2 package MooseX::Getopt::Meta::Attribute;
4 use Moose::Util::TypeConstraints;
7 our $AUTHORITY = 'cpan:STEVAN';
9 extends 'Moose::Meta::Attribute'; # << Moose extending Moose :)
14 predicate => 'has_cmd_flag',
17 # This subtype is to support scalar -> arrayref coercion
18 # without polluting the built-in types
19 subtype '_MooseX_Getopt_CmdAliases' => as 'ArrayRef';
21 coerce '_MooseX_Getopt_CmdAliases'
25 has 'cmd_aliases' => (
27 isa => '_MooseX_Getopt_CmdAliases',
28 predicate => 'has_cmd_aliases',
34 # register this as a metaclass alias ...
35 package Moose::Meta::Attribute::Custom::Getopt;
36 sub register_implementation { 'MooseX::Getopt::Meta::Attribute' }
46 MooseX::Getopt::Meta::Attribute - Optional meta attribute for custom option names
53 with 'MooseX::Getopt';
56 metaclass => 'MooseX::Getopt::Meta::Attribute',
59 default => 'file.dat',
61 # tells MooseX::Getopt to use --somedata as the
62 # command line flag instead of the normal
63 # autogenerated one (--data)
64 cmd_flag => 'somedata',
66 # tells MooseX::Getopt to also allow --moosedata,
67 # -m, and -d as aliases for this same option on
69 cmd_aliases => [qw/ moosedata m d /],
71 # Or, you can use a plain scalar for a single alias:
77 This is a custom attribute metaclass which can be used to specify a
78 the specific command line flag to use instead of the default one
79 which L<MooseX::Getopt> will create for you.
81 This is certainly not the prettiest way to go about this, but for
82 now it works for those who might need such a feature.
84 =head2 Custom Metaclass alias
86 This now takes advantage of the Moose 0.19 feature to support
87 custom attribute metaclass aliases. This means you can also
88 use this as the B<Getopt> alias, like so:
90 has 'foo' => (metaclass => 'Getopt', cmd_flag => 'f');
94 These methods are of little use to most users, they are used interally
95 within L<MooseX::Getopt>.
101 Changes the commandline flag to be this value, instead of the default,
102 which is the same as the attribute name.
106 Adds more aliases for this commandline flag, useful for short options
109 =item B<has_cmd_flag>
111 =item B<has_cmd_aliases>
119 All complex software has bugs lurking in it, and this module is no
120 exception. If you find a bug please either email me, or add the bug
125 Stevan Little E<lt>stevan@iinteractive.comE<gt>
127 Brandon L. Black, E<lt>blblack@gmail.comE<gt>
129 =head1 COPYRIGHT AND LICENSE
131 Copyright 2007 by Infinity Interactive, Inc.
133 L<http://www.iinteractive.com>
135 This library is free software; you can redistribute it and/or modify
136 it under the same terms as Perl itself.