X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FHTML%2FElement%2FLibrary.pm;h=beb12454e66661537398294b8f39d13801515a93;hb=c978a62d4df31421ab1da8aab452d3e3c871d6a1;hp=3a666cdc3808d4783e974ef7e2fed492b49ae822;hpb=60f73909d150c3388a98572cab7fe0e409404188;p=html-element-library.git diff --git a/lib/HTML/Element/Library.pm b/lib/HTML/Element/Library.pm index 3a666cd..beb1245 100644 --- a/lib/HTML/Element/Library.pm +++ b/lib/HTML/Element/Library.pm @@ -1,5 +1,5 @@ package HTML::Element::Library; - +# ABSTRACT: Convenience methods for HTML::TreeBuilder and HTML::Element use strict; use warnings; @@ -25,7 +25,7 @@ our @EXPORT = qw(); -our $VERSION = '4.2.c'; + @@ -72,6 +72,53 @@ sub HTML::Element::defmap { } +sub HTML::Element::_only_empty_content { + my ($self)=@_; + my @c = $self->content_list; + my $length = scalar @c; + + #use Data::Dumper; + #warn sprintf 'Testing %s (%s)' , $self->starttag, Dumper(\@c); + #warn sprintf "\t\tlength of content: %d ", $length; + + scalar @c == 1 and not length($c[0]); +} + +sub HTML::Element::prune { + my ($self)=@_; + + for my $c ($self->content_list) { + next unless ref $c; + #warn "C: " . Dumper($c); + $c->prune; + } + + # post-order: + $self->delete if ($self->is_empty or $self->_only_empty_content); + $self; +} + +sub HTML::Element::newchild { + my ($lol, $parent_label, @newchild)=@_; + + use Data::Rmap qw(rmap_array); + + my ($mapresult) = rmap_array { + + + if ($_->[0] eq $parent_label) { + $_ = [ $parent_label => @newchild ]; + Data::Rmap::cut($_); + } else { + $_; + } + + } $lol; + + $mapresult; + +} + sub HTML::Element::crunch { my $container = shift;