Stevan et al.,

Thanks.  That is exactly what I want to do.  I will take a look at
MooseX::Storage and read on how the Moose exports works.  ( It might be a
little foreign to me since I am an Exporter guy.  I know, I know.  I may
lean again on the list for another questions or so. but I will give it my
best shot. )

Okay ... MooseX::Common is a little weak.  MooseX::Getopt::Commom?
MooseX::Attributes::Common?  MooseX::CommonAttributes?  MooseX::Attributes?

I'll have to sleep on this one.  As you can see, I have more than a little
trepidation of picking a stoopid name.

Cheers,

Chris



On Mon, Jun 23, 2008 at 7:52 AM, Stevan Little <
[EMAIL PROTECTED]> wrote:

> Well,
>
> You could do like what we did with MooseX::Storage, which exports a Storage
> function such that:
>
>  with Storage(format => 'JSON', io => 'File');
>
> is equivalent to:
>
>  with 'MooseX::Storage::Basic', 'MooseX::Storage::Format::JSON',
> 'MooseX::Storage::IO::File';
>
> So you could export an 'opts' function which would do the role composition
> for you, such that ...
>
>  opts qw(user password);
>
> would be equivalent to:
>
>  with 'My::App::User', 'My::App::Password';
>
> as for if this would be useful for CPAN, I think if you generalized it
> enough, and added support for namespacing the user/password roles, etc. I
> suspect it would be helpful/useful. I am not sure about the MooseX::Common::
> namespace though, it seems too general.
>
> - Stevan
>
>
> On Jun 23, 2008, at 2:39 AM, Christopher Brown wrote:
>
>  Stevan et al,
>>
>> Sorry about that, I hit send by accident just before climbing on a plane (
>> returning from a week in Chicago for YAPC and other events ).  Thanks for
>> the quick reply.
>>
>> I spend a good deal of churning out command-line and gui application based
>> on Moose class.  I find myself continually typing:
>>
>> has 'user' => ...
>> has 'password' => ...
>> has 'tmp' => ...
>>
>> How these get defined rarely ever changes.  Nor do the tests for them
>> change.  I am trying to create a module which implements common attributes
>> and sets up the framework for retrieving them from command line arguments,
>> stdin, a event driven GUI interface, etc.  It would be really nice to have
>> the ability to say simply:
>>
>> use Moose;
>> opts qw(user password );
>>
>> Where user might refer to MooseX::Common::user.pm and password might
>> refer to MooseX::Common::password.pm.  Both user.pm and password.pm would
>> define a Moose::Role  that has a simple 'has' function that defines the full
>> behavour of the common attribute.  Opts is similar to the load_plugins
>> function of Gillermo's MooseX::Object::Pluggable but allow for Class based
>> loading of plugins rather than instance based.  I plan on using this with
>>  MooseX::Getopt.  And this where it get troublesome.  When the
>> MooseX::Getopt constructor, new_with_options is called, the options are
>> retrieved.  And I then cannot use the MooseX::Object::Pluggable instance
>> based loading.
>>
>> Some things that strike me as possible are:
>>
>> 1. Just keep it simple and use  Moose::Roles.  But  then  instead of a
>> simple opt as described above, I have to say:
>> with qw( MooseX::Common::user MooseX::Common::password );
>> Not too bad, I suppose and barring any simple solutions for introducing
>> opts, I will probably do this.
>>
>> 2. Use Moose Classes instead of roles, but I only have a vague notion of
>> how this would work.  Having heard the horizontal reuse talk at YAPC, this
>> seems to go against the what seems like a perfect model for the horizontal
>> reuse pattern.
>>
>> One final question:
>> If I were to unlease this on CPAN ... any thoughts on whether it would be
>> useful and what I should call it?
>>
>> Thanks in Advance,
>>
>> Chris
>>
>>
>>
>>
>> I also plan on extending these with MooseX::Getopt;
>>
>> password might be are (to be) defined as Moose roles and gathered using
>> MooseX::Getopt and loaded  by a mechanism such as MooseX::Object::Pluggable.
>>
>>
>>
>> On Sun, Jun 22, 2008 at 8:36 PM, Stevan Little <
>> [EMAIL PROTECTED]> wrote:
>> Christopher,
>>
>> Well it all depends on how you want to extend them, some ways are better
>> then others.
>>
>> To extend the whole of Moose, take a look at the section on Extending and
>> Embedding Moose in the Moose.pm POD. It explains how you can wrap the Moose
>> system and extend it for your needs.
>>
>> To just extend the options that 'has' accepts, you can do that with custom
>> attribute metaclasses or attribute traits (there are cookbooks on both of
>> these).
>>
>> Short of that I would need to know more what  you want the syntax too look
>> like to give you any better clues.
>>
>> - Steva
>>
>>
>>
>>
>> On Jun 22, 2008, at 12:03 PM, Christopher Brown wrote:
>>
>> Hi All,
>>
>> Quick questions: Is it advisable to extend the core Moose keywords. ( I
>> think the answer is no).  But if so, what is the best way to do it.
>>
>> Background:
>>  I am trying to extend MooseX::Getopt to provide patterns for the standard
>> GNU Command Line Options
>>
>>
>

Reply via email to