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(@_);
my $self = shift;
# allow ->add_to_attribute(name => 'value')
# or ->add_to_attribute({ name => 'name', value => 'value' })
+
+ die "WARNING: Long form arg (name => 'class', value => 'x') is deprecated"
+ if(@_ == 1 && $_[0]->{'name'} && $_[0]->{'value'});
my ($name, $value) = @_ > 1 ? @_ : @{$_[0]}{qw(name value)};
return ($name, $self->_zconfig->parser->html_escape($value));
}
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_from_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(@_);
};
}
+sub remove_from_attribute {
+ my $self = shift;
+ my $attr = $self->_parse_attribute_args(@_);
+ sub {
+
+ my $a = (my $evt = $_[0])->{attrs};
+ my @kupd = grep {exists $a->{$_}} keys %$attr;
+ +{ %$evt, raw => undef, raw_attrs => undef,
+ attrs => {
+ %$a,
+ #TODO needs to support multiple removes
+ map { my $tar = $_; $_ => join ' ',
+ map {$attr->{$tar} ne $_} split ' ', $a->{$_} } @kupd
+ },
+ }
+ };
+}
+
sub remove_attribute {
my ($self, $args) = @_;
my $name = (ref($args) eq 'HASH') ? $args->{name} : $args;
->select('p')
->set_attribute(class=>'paragraph')
->select('div')
- ->set_attribute({name=>'class', value=>'divider'});
-
+ ->set_attribute({class=>'paragraph', name=>'divider'});
Overrides existing values, if such exist. When multiple L</set_attribute>
calls are made against the same or overlapping selection sets, the final
Adds a value to an existing attribute, or creates one if the attribute does not
yet exist. You may call this method with either an Array or HashRef of Args.
-Here's the 'long form' HashRef:
-
$html_zoom
->select('p')
- ->set_attribute(class=>'paragraph')
- ->then
- ->add_to_attribute({name=>'class', value=>'divider'});
-
-And the exact same effect using the 'short form' Array:
-
- $html_zoom
- ->select('p')
- ->set_attribute(class=>'paragraph')
+ ->set_attribute({class => 'paragraph', name => 'test'})
->then
->add_to_attribute(class=>'divider');
->then
->remove_attribute('class');
+=head2 remove_from_attribute
+
+Removes a value from existing attribute
+
+ $html_zoom
+ ->select('p')
+ ->set_attribute(class=>'paragraph lead')
+ ->then
+ ->remove_from_attribute('class' => 'lead');
+
Removes attributes from the original stream or events already added.
+=head2 add_class
+
+Add to a class attribute
+
+=head2 remove_class
+
+Remove from a class attribute
+
=head2 transform_attribute
Transforms (or creates or deletes) an attribute by running the passed