use Carp qw(confess);
use Data::Dumper;
use HTML::Element;
+use List::Util qw(first);
use List::MoreUtils qw/:all/;
use Params::Validate qw(:all);
use Scalar::Listify;
$p->content_list;
}
+sub HTML::Element::data_map {
+
+ my ($container, @rest) = @_;
+
+
+ my %p = validate(@rest, {
+ href => 1,
+ with_attr => 1,
+ excluding => { type => ARRAYREF, default => [] }
+ }
+ );
+
+ my @same_as = $container->look_down('_attr' => $p{with_attr});
+
+ for my $same_as (@same_as) {
+ next if first { $same_as eq $_ } @{$p{excluding}} ;
+ $same_as->replace_content( $p{href}->{ $same_as->attr( $p{with_attr} ) } ) ;
+ }
+
+}
+
+
sub HTML::Element::passover {
my ($tree, $child_id) = @_;
- #warn "ARGS: my ($tree, $child)";
+ warn "ARGS: my ($tree, $child_id)" if $DEBUG;
+ warn $tree->as_HTML(undef, ' ') if $DEBUG;
my $exodus = $tree->look_down(id => $child_id);
+ warn "E: $exodus" if $DEBUG;
+
my @s = HTML::Element::siblings($exodus);
for my $s (@s) {
sub HTML::Element::content_handler {
- my ($tree, $id_name, $content) = @_;
+ my ($tree, %content_hash) = @_;
+
+ for my $k (keys %content_hash) {
+ $tree->set_child_content(id => $k, $content_hash{$k});
+ }
- $tree->set_child_content(id => $id_name, $content);
}
warn "wrapper_data: " . Dumper $p{wrapper_data} if $p{debug} ;
my $container = ref_or_ld($tree, $p{wrapper_ld});
+ warn "container: " . $container if $p{debug} ;
warn "wrapper_(preproc): " . $container->as_HTML if $p{debug} ;
$p{wrapper_proc}->($container) if defined $p{wrapper_proc} ;
warn "wrapper_(postproc): " . $container->as_HTML if $p{debug} ;
After finding the node, it detaches the node's content and pushes $content as the node's content.
-=head3 $tree->content_handler($sid_value , $content)
+=head3 $tree->content_handler(%id_content)
This is a convenience method. Because the look_down criteria will often simply be:
$elem->set_child_content(sid => 'fixme', 'new text')
+PLEASE NOTE: you can pass a hash whose keys are C<id>s and whose values are the content you want there and it will perform the replacement on each hash member:
+
+ my %id_content = (name => "Terrence Brannon",
+ email => 'tbrannon@in.com',
+ balance => 666,
+ content => $main_content);
+
+ $tree->content_handler(%id_content);
+
=head3 $tree->highlander($subtree_span_id, $conditionals, @conditionals_args)
This allows for "if-then-else" style processing. Highlander was a movie in