1 package HTML::String::Value;
12 my ($self, $str) = @_;
14 if ( $str->$_isa(__PACKAGE__) ) {
15 return $self->unescaped_string | . $op . q| $str->unescaped_string;
18 return $self->unescaped_string | . $op . q| $str;
24 '""' => 'escaped_string',
29 'cmp' => op_factory('cmp'),
30 'eq' => op_factory('eq'),
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('>>'),
40 '<<' => op_factory('<<'),
46 my ($class, @raw_parts) = @_;
49 if (ref($_) eq 'ARRAY') {
51 } elsif ($_->$_isa(__PACKAGE__)) {
58 my $self = bless { parts => \@parts }, $class;
66 return join '', map +(
78 sub unescaped_string {
81 return join '', map $_->[0], @{$self->{parts}};
85 my ($self, $str, $prefix) = @_;
87 return $self unless $str;
89 my @parts = @{$self->{parts}};
92 $str->$_isa(__PACKAGE__)
98 unshift @parts, @new_parts;
100 push @parts, @new_parts;
103 return ref($self)->new(@parts);
107 my ($self, $str, $prefix) = @_;
109 return $self unless $str;
112 $str->$_isa(__PACKAGE__)
117 push @{$self->{parts}}, @new_parts;
125 return ref($self)->new(@{$self->{parts}});