shift->_zconfig->stream_utils->flatten_stream_of_streams(@_)
}
+sub set_attr { shift->set_attribute(@_); }
+
sub set_attribute {
my $self = shift;
my ($name, $value) = $self->_parse_attribute_args(@_);
die "renamed to add_to_attribute. killing this entirely for 1.0";
}
+sub add_class { shift->add_to_attribute('class',@_) }
+
+sub remove_class { shift->remove_attribute('class',@_) }
+
+sub set_class { shift->set_attribute('class',@_) }
+
+sub set_id { shift->set_attribute('id',@_) }
+
sub add_to_attribute {
my $self = shift;
my ($name, $value) = $self->_parse_attribute_args(@_);
'set attribute on existing attribute'
);
+($expect = $tmpl) =~ s/class="main"/class="foo"/;
+
+is(
+ run_for { $_->set_attr({ name => 'class', value => 'foo' }) },
+ $expect,
+ 'set attribute on existing attribute (shorthand)'
+);
+
($expect = $tmpl) =~ s/class="main"/class="main" foo="bar"/;
is(
'add attribute on existing attribute'
);
+($expect = $tmpl) =~ s/class="main"/class="main foo"/;
+
+is(
+ run_for { $_->add_class('foo') },
+ $expect,
+ 'add attribute on existing attribute (shorthand)'
+);
+
+($expect = $tmpl) =~ s/class="main"/class="main" id="foo"/;
+
+is(
+ run_for { $_->set_id('foo') },
+ $expect,
+ 'set_id (shorthand)'
+);
+
($expect = $tmpl) =~ s/class="main"/class="main" foo="bar"/;
is(