my %p = validate(@_, {
hash => { type => HASHREF },
to_attr => 1,
- excluding => { type => ARRAYREF },
+ excluding => { type => ARRAYREF , default => [] },
debug => { default => 0 },
});
- my @same_as = $container->look_down('_attr' => $p{to_attr});
+ warn 'The container tag is ', $container->tag if $p{debug} ;
+ warn 'hash' . Dumper($p{hash}) if $p{debug} ;
+ warn 'at_under' . Dumper(\@_);
+
+ my @same_as = $container->look_down( $p{to_attr} => qr/.+/ ) ;
+
+ warn 'Found ' . scalar(@same_as) . ' nodes' if $p{debug} ;
+
for my $same_as (@same_as) {
- next if first { $same_as->attr($p{to_attr}) eq $_ } @{$p{excluding}} ;
- my $hash_key = $same_as->attr($p{to_attr}) ;
- $same_as->replace_content( $p{hash}->{$hash_key} ) ;
+ my $attr_val = $same_as->attr($p{to_attr}) ;
+ if (first { $attr_val eq $_ } @{$p{excluding}}) {
+ warn "excluding $attr_val" if $p{debug} ;
+ next;
+ }
+ warn "processing $attr_val" if $p{debug} ;
+ $same_as->replace_content( $p{hash}->{$attr_val} ) ;
}
}
<body>
<table>
<tr align="left" sclass="tr" valign="top" class="alt">
- <td sid="people_id">1</td>
- <td sid="phone">(877) 255-3239</td>
- <td sid="email"><a sid="a_email" href="mailto:leave-me-alone@gmail.com"
+ <td sid="people_id">888</td>
+ <td sid="phone">444-4444</td>
+ <td sid="email"><a href="mailto:leave-me-alone@gmail.com" id="a_email"
>should-not-be-touched@seamstress.com</a></td>
</tr>
</table>
<body>
<table>
<tr align="left" sclass="tr" valign="top" class="alt">
- <td sid="people_id">1</td>
- <td sid="phone">(877) 255-3239</td>
- <td sid="email"><a sid="a_email" href="mailto:leave-me-alone@gmail.com"
+ <td sid="people_id">888</td>
+ <td sid="phone">444-4444</td>
+ <td sid="email"><a href="mailto:leave-me-alone@gmail.com" id="a_email"
>should-not-be-touched@seamstress.com</a></td>
</tr>
</table>
<tr sclass="tr" class="alt" align="left" valign="top">
<td sid="people_id">1</td>
<td sid="phone">(877) 255-3239</td>
- <td sid="email"><a sid="a_email" href="mailto:leave-me-alone@gmail.com">should-not-be-touched@seamstress.com</a></td>
+ <td sid="email"><a id="a_email" href="mailto:leave-me-alone@gmail.com">should-not-be-touched@seamstress.com</a></td>
</tr>
</table>
</body>
#warn "TREE: $tree" . $tree->as_HTML;
- my %data = (people_id => 888, phone => '444-4444', email => 'dont-you-dare-render@xml.com');
-
- $tree->hash_map(hash => \%data, to_attr => 'sid', excluding => ['email']);
+ my %data = (people_id => 888, phone => '444-4444', email => 'm@xml.com');
+
+ $tree->hash_map
+ (hash => \%data,
+ to_attr => 'sid',
+ excluding => [ 'email' ],
+ debug => 1
+ );
my $generated_html = ptree($tree, "$root.gen");