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) = @_;
48 if (ref($_) eq 'ARRAY') {
50 } elsif ($_->$_isa(__PACKAGE__)) {
57 my $self = bless { parts => \@parts }, $class;
65 return join '', map +(
77 sub unescaped_string {
80 return join '', map $_->[0], @{$self->{parts}};
84 my ($self, $str, $prefix) = @_;
86 return $self unless $str;
88 my @parts = @{$self->{parts}};
91 $str->$_isa(__PACKAGE__)
97 unshift @parts, @new_parts;
99 push @parts, @new_parts;
102 return ref($self)->new(@parts);
106 my ($self, $str, $prefix) = @_;
108 return $self unless $str;
111 $str->$_isa(__PACKAGE__)
116 push @{$self->{parts}}, @new_parts;
124 return ref($self)->new(@{$self->{parts}});