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',
27 'cmp' => op_factory('cmp'),
28 'eq' => op_factory('eq'),
29 '<=>' => op_factory('<=>'),
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('<<'),
44 my ($class, @raw_parts) = @_;
46 my @parts = map { ref($_) eq 'ARRAY' ? $_ : [$_] } @raw_parts;
48 my $self = bless { parts => \@parts }, $class;
56 return join '', map +(
68 sub unescaped_string {
71 return join '', map $_->[0], @{$self->{parts}};
75 my ($self, $str, $prefix) = @_;
77 return $self unless $str;
79 my @parts = @{$self->{parts}};
82 $str->$_isa(__PACKAGE__)
88 unshift @parts, @new_parts;
90 push @parts, @new_parts;
93 return ref($self)->new(@parts);
97 my ($self, $str, $prefix) = @_;
99 return $self unless $str;
102 $str->$_isa(__PACKAGE__)
107 push @{$self->{parts}}, @new_parts;