1 package HTML::String::Value;
11 my ($self, $str) = @_;
13 if ( $str->$_isa(__PACKAGE__) ) {
14 return $self->unescaped_string | . $op . q| $str->unescaped_string;
17 return $self->unescaped_string | . $op . q| $str;
23 '""' => 'escaped_string',
28 'cmp' => op_factory('cmp'),
29 'eq' => op_factory('eq'),
30 '<=>' => op_factory('<=>'),
31 '==' => op_factory('=='),
32 '%' => op_factory('%'),
33 '+' => op_factory('+'),
34 '-' => op_factory('-'),
35 '*' => op_factory('*'),
36 '/' => op_factory('/'),
37 '**' => op_factory('**'),
38 '>>' => op_factory('>>'),
39 '<<' => op_factory('<<'),
45 my ($class, @raw_parts) = @_;
47 my @parts = map { ref($_) eq 'ARRAY' ? $_ : [$_] } @raw_parts;
49 my $self = bless { parts => \@parts }, $class;
57 return join '', map +(
69 sub unescaped_string {
72 return join '', map $_->[0], @{$self->{parts}};
76 my ($self, $str, $prefix) = @_;
78 return $self unless $str;
80 my @parts = @{$self->{parts}};
83 $str->$_isa(__PACKAGE__)
89 unshift @parts, @new_parts;
91 push @parts, @new_parts;
94 return ref($self)->new(@parts);
98 my ($self, $str, $prefix) = @_;
100 return $self unless $str;
103 $str->$_isa(__PACKAGE__)
108 push @{$self->{parts}}, @new_parts;
116 return ref($self)->new(@{$self->{parts}});