# from Christopher J. Madsen
# on Saturday 15 March 2008 23:43:
>(but I suppose we could redefine our method with a hooked
>
>> wrapper when a hook request appears.)
>
>That's what I'm thinking. When a method is hooked, we define
> something like
>
>sub Module::Build::method_name {
> _call_method_with_hooks(@_, 'method_name')
>}
>
>So we'd have overhead only on the methods that actually got hooked.
>This is made simpler because M::B is essentially an empty class.
The emptiness of M::B is where the platform-specific subclass comes into
play.
So, let's put it is $class, and probably grab a snapshot of the code
ref.
sub create_hook {
my $class = shift;
my ($hook, $blah) = @_;
my $method = $class->can(hand_waving($hook));
$method ||= $class->default_method($hook);
*{$class . '::' . $method} = sub {
lahdeedah($blah, @_); $method->(@_); dahdeelah($blah, @_)
};
}
Though I think some of the plugin loading has to be remembered from
Build.PL-time and reconstructed at each './Build'. Perhaps printing a
subclass would ease that startup pain a bit, but then: reconstruction
might not take long enough to worry about.
--Eric
--
The reasonable man adapts himself to the world; the unreasonable man
persists in trying to adapt the world to himself. Therefore all progress
depends on the unreasonable man.
--George Bernard Shaw
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------