Stevan,

It went through okay.  I don't know about anyone else, but I noticed that it
takes up to a couple hours for uploads to work their way through the
system.

http://search.cpan.org/~ctbrown/MooseX-Attribute-0.01/

I actually suspected that the name, MooseX::Attribute is a bad one and
commented as such in the documentation.  I wil change the name other Moosers
feedback.  ( My utmost wish, of course, is to have the functionality moved
into Moose core. I see it as an important feature. The object of the module
that I wrote is perhaps mostly to show that how it can be done in the
existing Moose framework with little performance impact. )


Not withstanding my wishes, my next proejct will be to create these
extensible, reusable attributes for the GNU command line options list:

http://www.gnu.org/prep/standards/html_node/Option-Table.html#Option-Table

This might properly live in the vacated MooseX::Attribute namespace?  No.

Thanks for the feedback, I will apreciate any more suggestions,

Chris


On Sat, Jan 3, 2009 at 12:22 PM, Stevan Little <
stevan.lit...@iinteractive.com> wrote:

> Chris,
>
> I am not seeing it on CPAN yet, nor in the PAUSE incoming directory, you
> might want to check to make sure it went through.
>
> Without looking at the code, my only issue would probably be with the name.
> MooseX::Attribute is a very general name and not really descriptive of what
> it actually does, I think perhaps MooseX::DeferredAttribute would be a
> better name.
>
> - Stevan
>
>
>
>
> On Jan 3, 2009, at 2:37 PM, Christopher Brown wrote:
>
>  Hi All,
>>
>> I would like your feedback on MooseX::Attribute, uploaded to CPAN moments
>> ago.  This is my first attempt at creating extensible attributes.  Please
>> consider the code pre-alpha.
>>
>> A prototype attribute is provided by the sugar word 'attribute' that can
>> be
>> used in place of 'has'.  The 'attribute' defer adding attributes until all
>> attribute specifications are done.  It maintaining a list of
>> attribute_prototypes, those from which specifications can be borrowed and
>> attribute_installs, those which get installed into the object. Using a
>> method modifier 'before 'new', these attributes are installed.
>>
>> I also discovered some nice side-effects.  Deferred attribute construction
>> allows the ability to 'apply' specifications across attributes.  Say, for
>> example,  that you want to make attributes A, B, C 'ro' while making D,E,F
>> 'rw'.  This can easily be done.  I do not believe that it is so easy in
>> the
>> present Moose world.
>>
>> Anyhow, please let me know what you think.
>>
>> Happy New Year!
>>
>> Chris
>>
>>
>>
>>
>> On Wed, Dec 17, 2008 at 11:01 AM, Christopher Brown <
>> cbr...@opendatagroup.com> wrote:
>>
>>  Shawn et al.,
>>>
>>> Thanks for the more constructive criticism.  Keep it comin'.  My
>>> responses are inline:
>>>
>>> On Wed, Dec 17, 2008 at 1:39 AM, Sartak <sar...@gmail.com> wrote:
>>>
>>>> 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!
>>>>
>>>
>>> Oh agreed!  I needed an example.  It wouldn't be a bad idea to have
>>> everything set up for handle Getopts; but this should be off by
>>> default.
>>>
>>>  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');
>>>>
>>>
>>> Hmm.  Not bad.  It certainly gives the right construction.  My fear
>>> would be that this would tend to cause an explosion of has_* subs.
>>> Not a bad thing per se, but not as clean as I am hoping.  Might have
>>> to live with it.
>>>
>>>  Data::OptList (already used in several places in Moose as you know)
>>>> would make this trivial.
>>>>
>>>
>>> I think I will certainly make use of the excellent Data::OptList.
>>>
>>> Thanks,
>>>
>>> Chris
>>>
>>>
>

Reply via email to