Chris,
> I've always had the opinion that if I'm writing metaclass traits, then by
> definition I'm changing the private parts to accomplish my task. Which to
> me makes it far more acceptable than, say, poking at _process_options() from
> outside of Moose::Meta::Attribute. That is, I'm not accessing private
> methods inappropriately, as once the trait is consumed it's part of the
> class itself. (/me braces for contrary commentary)
Well, that's a fair point. My only counterpoint would be this bit of code:
> $class->_process_options($name, \%options) unless
> $options{__hack_no_process_options}; # used from clone()... YECHKKK FIXME
> ICKY YUCK GROSS
which leads me to believe that, eventually, someone is going to change
*something* about it. :-D
> Well, that and I'm not sure how to accomplish any of this _without_ poking
> at the guts :)
Well, both ealleniii and Todd provided alternatives which don't rely
on any private methods, but yours has the advantage of being the
absolute simplest (and least scary, really, private-method-meddling
and all). So I think I'm going to go with this approach for now. If
any other Moosites want to chiime in and tell me it's a terrible
thing, I'll consider that if I do end up getting that wild hair and
trying to wrestle it into a CPAN release. But for now this works
really well and doesn't hurt my brain too much. :-)
-- Buddy