On Wed, Dec 17, 2008 at 3:07 AM, Christopher Brown <cbr...@opendatagroup.com> wrote: > package MooseX::Attribute::DateTime; > > has 'datetime' => ( > is => 'rw' , > isa => 'DateTime' , > coerce => 1 , > metaclass => 'MooseX::Getopt::Meta::Attribute', > cmd_aliases => 'time' > );
I hope that the Getopt options here wouldn't actually be in the generic MooseX::Attribute::DateTime! > package myApp; > use Moose; > with 'MooseX::Attribute::DateTime'; > > has 'begin' => ( prototype => 'datetime', cmd_aliases => 'begin' ); > has 'end' => ( prototype => 'datetime', cmd_aliases => 'end' ); > ... I don't think overriding "has" is the right solution. How's this? I rather like it: package myApp; use Moose; use MooseX::Attribute::DateTime; has_date begin => (cmd_aliases => 'begin'); has_date end => (cmd_aliases => 'end'); "has_date" could be configurable, you just pass the keyword you want to "use MooseX::Attribute::DateTime". Alternatively, you could go even further and allow extra parameters to be specified in the "use" line, such as: use MooseX::Attribute::DateTime ( 'has_date', needs_date => { required => 1, }, ); needs_date begin => (cmd_aliases => 'begin'); has_date end => (cmd_aliases => 'end'); Data::OptList (already used in several places in Moose as you know) would make this trivial. Shawn