On Thu, Dec 22, 2011 at 1:40 PM, Buddy Burden <barefootco...@gmail.com>wrote:

> I'm still experimenting here, but I had a couple of questions


Just to throw a third approach in...

Given that this is easily achievable with builders/defaults (if you're
willing to set them on every attribute), I'd probably just wrap the
Moose::Meta::Attribute::_process_options() method (via an attribute trait)
along the lines of:

before _process_options => sub {
    my ($class, $name, $options) = @_;

    # if any of these are set, then...  wtf?
    return if $options->{builder} || $options->{default} || defined
$options->{required};

    $options->{required} = 1;
    $options->{default} = sub { ... magic prompting code ... };

    return;
};

This is minimally invasive, and leverages pre-existing bits to achieve its
ends.  ...assuming that I've understood what you were aiming for.  Adding a
custom prompt option should be pretty straight-forward from this point, and
building a Moose::Exporter package to apply it should be so as well.

...do note that you'll need to pay attention to the attribute-from-role and
extends cases; such an exercise is left for the reader.  (Though the code
in MooseX::AttributeShortcuts should help.)

                                       -Chris

-- 
Chris Weyl
Ex astris scientia

Reply via email to