Merge branch 'master' into jnap/get_attribute jnap/get_attribute
John Napiorkowski [Fri, 15 May 2015 19:10:03 +0000 (15:10 -0400)]
1  2 
lib/HTML/Zoom/FilterBuilder.pm
lib/HTML/Zoom/StreamBase.pm

@@@ -26,25 -26,15 +26,23 @@@ sub _flatten_stream_of_streams 
  
  sub set_attr { shift->set_attribute(@_); }
  
 +sub get_attribute {
 +  my ($self, $attr, $return_array) = @_;
 +  return sub {
 +    push @$return_array, $_[0]->{attrs}->{$attr};
 +    return $_[0];
 +  };
 +}
 +
  sub set_attribute {
    my $self = shift;
-   my ($name, $value) = $self->_parse_attribute_args(@_);
+   my $attr = $self->_parse_attribute_args(@_);
    sub {
      my $a = (my $evt = $_[0])->{attrs};
-     my $e = exists $a->{$name};
+     my @kadd = grep {!exists $a->{$_}} keys %$attr;
      +{ %$evt, raw => undef, raw_attrs => undef,
-        attrs => { %$a, $name => $value },
-       ($e # add to name list if not present
-         ? ()
-         : (attr_names => [ @{$evt->{attr_names}}, $name ]))
+        attrs => { %$a, %$attr },
+        @kadd ? (attr_names => [ @{$evt->{attr_names}}, @kadd ]) : ()
       }
     };
  }
Simple merge