X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom.pm;h=80ee8e9b369f5ea4c8dc7a2adaadb06ab8402db0;hb=fdb039c6cede6d5cff55d27bde6afd723507cb81;hp=88c488f89fcd9ee8ad4127f37a75971f81089292;hpb=97192b02d221241de847e9fe853ec6867ee90fd0;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom.pm b/lib/HTML/Zoom.pm index 88c488f..80ee8e9 100644 --- a/lib/HTML/Zoom.pm +++ b/lib/HTML/Zoom.pm @@ -8,6 +8,10 @@ use HTML::Zoom::ReadFH; use HTML::Zoom::Transform; use HTML::Zoom::TransformBuilder; +our $VERSION = '0.009001'; + +$VERSION = eval $VERSION; + sub new { my ($class, $args) = @_; my $new = {}; @@ -25,13 +29,18 @@ sub _with { bless({ %{$_[0]}, %{$_[1]} }, ref($_[0])); } -sub from_html { +sub from_events { my $self = shift->_self_or_new; $self->_with({ - initial_events => $self->zconfig->parser->html_to_events($_[0]) + initial_events => shift, }); } +sub from_html { + my $self = shift->_self_or_new; + $self->from_events($self->zconfig->parser->html_to_events($_[0])) +} + sub from_file { my $self = shift->_self_or_new; my $filename = shift; @@ -52,9 +61,14 @@ sub to_fh { HTML::Zoom::ReadFH->from_zoom(shift); } +sub to_events { + my $self = shift; + [ $self->zconfig->stream_utils->stream_to_array($self->to_stream) ]; +} + sub run { my $self = shift; - $self->zconfig->stream_utils->stream_to_array($self->to_stream); + $self->to_events; return } @@ -64,6 +78,17 @@ sub apply { $self->$code; } +sub apply_if { + my ($self, $predicate, $code) = @_; + if($predicate) { + local $_ = $self; + $self->$code; + } + else { + $self; + } +} + sub to_html { my $self = shift; $self->zconfig->producer->html_from_stream($self->to_stream); @@ -288,16 +313,16 @@ cleanly: map { my $field = $_; sub { $_->select('label') - ->add_attribute( for => $field->{id} ) + ->add_to_attribute( for => $field->{id} ) ->then ->replace_content( $field->{label} ) ->select('input') - ->add_attribute( name => $field->{name} ) + ->add_to_attribute( name => $field->{name} ) ->then - ->add_attribute( type => $field->{type} ) + ->add_to_attribute( type => $field->{type} ) ->then - ->add_attribute( value => $field->{value} ) + ->add_to_attribute( value => $field->{value} ) } } @fields ]); @@ -686,11 +711,25 @@ together; the intermediary object isn't designed or expected to stick around. =head2 then - my $z2 = $z1->select('div')->add_attribute(class => 'spoon') + my $z2 = $z1->select('div')->add_to_attribute(class => 'spoon') ->then ->replace_content('I AM A DIV!'); Re-runs the previous select to allow you to chain actions together on the same selector. +=head1 AUTHORS + +=over + +=item * Matt S. Trout + +=back + +=head1 LICENSE + +This library is free software, you can redistribute it and/or modify +it under the same terms as Perl itself. + =cut +