Merge branch 'master' of git.shadowcat.co.uk:HTML-Zoom into people/purge/form_helpers
Simon Elliott [Mon, 27 Jun 2011 10:31:34 +0000 (11:31 +0100)]
lib/HTML/Zoom.pm
t/bugs/void.t [new file with mode: 0644]
t/selectors.t

index 26ad101..f81b157 100644 (file)
@@ -643,6 +643,12 @@ zoom instance with that as the source HTML to be transformed.
 
 Convenience method - slurps the contents of $file and calls from_html with it.
 
+=head2 from_events
+
+  my $zoom = HTML::Zoom->from_events($evt);
+
+Create a new Zoom object from collected events
+
 =head2 to_stream
 
   my $stream = $zoom->to_stream;
@@ -691,6 +697,14 @@ sugar, the following is entirely equivalent:
 
   my $z2 = $sub->($z1);
 
+=head2 apply_if
+
+  my $z2 = $z1->apply_if($cond, sub {
+    $_->select('div')->replace_content('I AM A DIV!') })
+  });
+
+->apply but will only run the tranform if $cond is true
+
 =head2 to_html
 
   my $html = $zoom->to_html;
diff --git a/t/bugs/void.t b/t/bugs/void.t
new file mode 100644 (file)
index 0000000..520f15c
--- /dev/null
@@ -0,0 +1,34 @@
+use strictures 1;
+use Test::More skip_all => 'TODO test';
+
+use HTML::Zoom;
+
+my $tmpl = <<END;
+<body>
+  <input class="main"/>
+</body>
+END
+
+my $tmpl2 = <<END;
+<body>
+  <div>cluck</div><input class="main"/>
+</body>
+END
+
+my $z = HTML::Zoom->from_html($tmpl);
+
+my $count = 0;
+$z->select('input')->collect({
+  filter => sub { $count++; $_ },
+  passthrough => 1,
+})->run;
+
+is($count, 1,"collect on void");
+
+is(
+  $z->select('input')
+  ->add_before(\"<div>cluck</div>")
+  ->to_html, $tmpl2,
+"added before void");
+
+done_testing;
index 5b6a60a..c8b5b11 100644 (file)
@@ -72,6 +72,17 @@ is( HTML::Zoom->from_html('<div frew="yo"></div>'.$stub)
     '<div frew="yo">grg</div>'.$stub,
     'E[attr=val] works' );
 
+{
+    local $TODO = 'mixed-case attribute names are broken';
+    # el[Attr=foo]
+    is( HTML::Zoom->from_html('<div FreW="yo"></div>'.$stub)
+        ->select('div[FreW=yo]')
+        ->replace_content('grg')
+        ->to_html,
+        '<div FreW="yo">grg</div>'.$stub,
+        'E[attr=val] works with mixed-case attribute names' );
+}
+
 # el[attr=foo\.bar]
 is( HTML::Zoom->from_html('<div frew="yo.yo"></div>'.$stub)
     ->select('div[frew=yo\.yo]')