package HTML::Seamstress; use strict; use warnings; use Carp qw(confess); use Cwd; use Data::Dumper; use File::Slurp; use File::Spec; use base qw/HTML::Element::Library HTML::TreeBuilder HTML::Element/; our $VERSION = '5.0b' ; sub bless_tree { my ($node, $class) = @_; if (ref $node) { # warn "root node($class): ", $node->as_HTML; bless $node, $class ; foreach my $c ($node->content_list) { bless_tree($c, $class); } } } sub new_from_file { # or from a FH my ($class, $file) = @_; my $new = HTML::TreeBuilder->new_from_file($file); bless_tree($new, $class); # warn "here is new: $new ", $new->as_HTML; $new; } sub html { my ($class, $file, $extension) = @_; $extension ||= 'html'; my $pm = File::Spec->rel2abs($file); $pm =~ s!pm$!$extension!; $pm; } sub eval_require { my $module = shift; return unless $module; eval "require $module"; confess $@ if $@; } sub HTML::Element::expand_replace { my $node = shift; my $seamstress_module = ($node->content_list)[0] ; eval "require $seamstress_module"; die $@ if $@; $node->replace_content($seamstress_module->new) ; } 1; __END__