From: Matt S Trout Date: Thu, 18 Feb 2010 01:37:32 +0000 (+0000) Subject: switch from 'inside' to 'content' terminology wise X-Git-Tag: release_0.009004~77 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FHTML-Zoom.git;a=commitdiff_plain;h=865bb5d2274193c492063e21f595aa939e08e55d switch from 'inside' to 'content' terminology wise --- diff --git a/lib/HTML/Zoom/FilterBuilder.pm b/lib/HTML/Zoom/FilterBuilder.pm index 0d4be1a..e9c67d8 100644 --- a/lib/HTML/Zoom/FilterBuilder.pm +++ b/lib/HTML/Zoom/FilterBuilder.pm @@ -84,7 +84,7 @@ sub remove_attribute { sub collect { my ($self, $options) = @_; - my ($into, $passthrough, $inside) = @{$options}{qw(into passthrough inside)}; + my ($into, $passthrough, $content) = @{$options}{qw(into passthrough content)}; sub { my ($evt, $stream) = @_; # We wipe the contents of @$into here so that other actions depending @@ -92,15 +92,15 @@ sub collect { # I -suspect- it's better for that state reset to be managed here; if it # ever becomes painful the decision should be revisited if ($into) { - @$into = $inside ? () : ($evt); + @$into = $content ? () : ($evt); } if ($evt->{is_in_place_close}) { - return $evt if $passthrough || $inside; + return $evt if $passthrough || $content; return; } my $name = $evt->{name}; my $depth = 1; - my $_next = $inside ? 'peek' : 'next'; + my $_next = $content ? 'peek' : 'next'; my $collector = $self->_stream_from_code(sub { return unless $stream; while (my ($evt) = $stream->$_next) { @@ -108,21 +108,26 @@ sub collect { $depth-- if ($evt->{type} eq 'CLOSE'); unless ($depth) { undef $stream; - return if $inside; + return if $content; push(@$into, $evt) if $into; return $evt if $passthrough; return; } push(@$into, $evt) if $into; - $stream->next if $inside; + $stream->next if $content; return $evt if $passthrough; } die "Never saw closing before end of source"; }); - return ($passthrough||$inside) ? [ $evt, $collector ] : $collector; + return ($passthrough||$content) ? [ $evt, $collector ] : $collector; }; } +sub collect_content { + my ($self, $options) = @_; + $self->collect({ %{$options||{}}, content => 1 }) +} + sub add_before { my ($self, $events) = @_; sub { return $self->_stream_from_array(@$events, $_[0]) }; @@ -141,7 +146,7 @@ sub add_after { }; } -sub prepend_inside { +sub prepend_content { my ($self, $events) = @_; sub { my ($evt) = @_; @@ -155,9 +160,9 @@ sub prepend_inside { }; } -sub append_inside { +sub append_content { my ($self, $events) = @_; - my $coll_proto = $self->collect({ passthrough => 1, inside => 1 }); + my $coll_proto = $self->collect({ passthrough => 1, content => 1 }); sub { my ($evt) = @_; if ($evt->{is_in_place_close}) { @@ -196,6 +201,11 @@ sub replace { }; } +sub replace_content { + my ($self, $replace_with, $options) = @_; + $self->replace($replace_with, { %{$options||{}}, content => 1 }) +} + sub repeat { my ($self, $repeat_for, $options) = @_; $options->{into} = \my @into; @@ -211,4 +221,9 @@ sub repeat { $self->replace($repeater, $options); } +sub repeat_content { + my ($self, $repeat_for, $options) = @_; + $self->repeat($repeat_for, { %{$options||{}}, content => 1 }) +} + 1; diff --git a/t/actions.t b/t/actions.t index ab8e92b..d9b883a 100644 --- a/t/actions.t +++ b/t/actions.t @@ -115,17 +115,17 @@ is( ($expect = $tmpl) =~ s/(?<=class="main">)/O HAI/; is( - run_for { $_->prepend_inside($ohai) }, + run_for { $_->prepend_content($ohai) }, $expect, - 'prepend_inside ok' + 'prepend_content ok' ); ($expect = $tmpl) =~ s/
/
O HAI<\/hr>/; is( - (run_for { $_->prepend_inside($ohai) } 'hr'), + (run_for { $_->prepend_content($ohai) } 'hr'), $expect, - 'prepend_inside ok with in place close' + 'prepend_content ok with in place close' ); is( @@ -161,12 +161,12 @@ is( @ev = (); is( - run_for { $_->collect({ into => \@ev, inside => 1 }) }, + run_for { $_->collect({ into => \@ev, content => 1 }) }, '
', - 'collect w/inside removes correctly' + 'collect w/content removes correctly' ); is( @@ -176,31 +176,27 @@ is( Builder
', - 'collect w/inside collects correctly' + 'collect w/content collects correctly' ); is( - run_for { $_->replace($ohai, { inside => 1 }) }, + run_for { $_->replace($ohai, { content => 1 }) }, '
O HAI
', - 'replace w/inside' + 'replace w/content' ); ($expect = $tmpl) =~ s/(?=<\/div>)/O HAI/; is( - run_for { $_->append_inside($ohai) }, + run_for { $_->append_content($ohai) }, $expect, - 'append inside ok' + 'append content ok' ); -if (1) { - -warn "\n\n----\n\n"; - -my $r_inside = sub { my $r = shift; sub { $_->replace($r, { inside => 1 }) } }; +my $r_content = sub { my $r = shift; sub { $_->replace($r, { content => 1 }) } }; is( run_for { @@ -208,13 +204,13 @@ is( [ sub { filter - filter($_ => '.name' => $r_inside->('mst')) - => '.career' => $r_inside->('Chainsaw Wielder') + filter($_ => '.name' => $r_content->('mst')) + => '.career' => $r_content->('Chainsaw Wielder') }, sub { filter - filter($_ => '.name' => $r_inside->('mdk')) - => '.career' => $r_inside->('Adminion') + filter($_ => '.name' => $r_content->('mdk')) + => '.career' => $r_content->('Adminion') }, ] ) @@ -234,6 +230,36 @@ is( 'repeat ok' ); -} +is( + run_for { + $_->repeat_content( + [ + sub { + filter + filter($_ => '.name' => $r_content->('mst')) + => '.career' => $r_content->('Chainsaw Wielder') + }, + sub { + filter + filter($_ => '.name' => $r_content->('mdk')) + => '.career' => $r_content->('Adminion') + }, + ] + ) + }, + q{ +
+ mst + Chainsaw Wielder +
+ + mdk + Adminion +
+
+ +}, + 'repeat_content ok' +); done_testing;