Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Re: Extending object you don't create

by merlyn (Sage)
on Feb 28, 2001 at 06:42 UTC ( #61262=note: print w/ replies, xml ) Need Help??


in reply to Re: Extending object you don't create
in thread Extending object you don't create

Or, if you need to do this during construction, consider subclassing HTML::TreeBuilder and selectively overriding methods.
That won't work if HTML::TreeBuilder has "hard coded" the name of HTML::Element, which I suspect it has.

As a hack, I'd just define methods in HTML::Element's space.

For long term, write the author of HTML::TreeBuilder and tell him to make the subclass an overrideable constant:

package HTML::TreeBuilder; sub element_class { return "HTML::Element"; } ... sub make_sub_node { ... my $ele = $self->element_class->new(...); #makes an HTML::Element pe +rhaps .. }
because then you can override that:
package My::TreeBuilder; use base qw(HTML::TreeBuilder); sub element_class { return "My::Element" }; package My::Element; use base qw(HTML::Element); sub my_additional_method { ... }
.

-- Randal L. Schwartz, Perl hacker


Comment on Re: Re: Extending object you don't create
Select or Download Code
Re: Re: Re: Extending object you don't create
by dws (Chancellor) on Feb 28, 2001 at 06:54 UTC
    This is easier to pull off than that I thought. HTML::TreeBuilder already makes allowance for building a tree with objects other than instance of HTML::Element.
    my $tree = new HTML::TreeBuilder(...); # now replace 'HTML::Element' with my subclass $tree->{'_element_class'} = 'HTML::MyElementSubclass';

    Or, if this offends your sensibilities, subclass HTML::TreeBuilder, override new(), and invoke INHERITED::new() before resetting the element class.

    This works with HTML::TreeBuilder 3.09.

      Thanks. I didn't realize it had this ability. I will prostrate myself before the altar for a full day :)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://61262]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (7)
As of 2015-07-06 10:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (72 votes), past polls