add transform_attribute, which runs a coderef on the value of an attribute, and can...
[catagits/HTML-Zoom.git] / lib / HTML / Zoom.pm
index 043c165..402ca1f 100644 (file)
@@ -1,13 +1,16 @@
 package HTML::Zoom;
 
-use strict;
-use warnings FATAL => 'all';
+use strictures 1;
 
 use HTML::Zoom::ZConfig;
 use HTML::Zoom::ReadFH;
 use HTML::Zoom::Transform;
 use HTML::Zoom::TransformBuilder;
 
+our $VERSION = '0.009004';
+
+$VERSION = eval $VERSION;
+
 sub new {
   my ($class, $args) = @_;
   my $new = {};
@@ -74,6 +77,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);
@@ -298,16 +312,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
   ]);
@@ -696,11 +710,40 @@ 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 AUTHOR
+
+mst - Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>
+
+=head1 CONTRIBUTORS
+
+Oliver Charles
+
+Jakub Nareski
+
+Simon Elliot
+
+Joe Highton
+
+John Napiorkowski
+
+Robert Buels
+
+=head1 COPYRIGHT
+
+Copyright (c) 2010-2011 the HTML::Zoom L</AUTHOR> and L</CONTRIBUTORS>
+as listed above.
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
 =cut
+