1 package HTML::String::Value;
9 '""' => '_hsv_escaped_string',
11 'bool' => '_hsv_is_true',
17 if (ref($_[0])) { my $c = shift; return $c->_hsv_unescaped_string->new(@_) }
18 my ($class, @raw_parts) = @_;
20 my $opts = (ref($raw_parts[-1]) eq 'HASH') ? pop(@raw_parts) : {};
23 if (ref($_) eq 'ARRAY') {
25 } elsif ($_->$_isa(__PACKAGE__)) {
32 my $self = bless { parts => \@parts, %$opts }, $class;
39 (my $meth = our $AUTOLOAD) =~ s/.*:://;
40 die "No such method ${meth} on ${invocant}"
41 unless ref($invocant);
42 return $invocant->_hsv_unescaped_string->$meth(@_);
45 sub _hsv_escaped_string {
48 if ($self->{ignore}{scalar caller}) {
49 return $self->_hsv_unescaped_string;
52 return join '', map +(
64 sub _hsv_unescaped_string {
67 return join '', map $_->[0], @{$self->{parts}};
71 my ($self, $str, $prefix) = @_;
73 return $self unless $str;
75 my @parts = @{$self->{parts}};
78 $str->$_isa(__PACKAGE__)
84 unshift @parts, @new_parts;
86 push @parts, @new_parts;
89 return ref($self)->new(@parts, { ignore => $self->{ignore} });
94 return 1 if grep length($_), map $_->[0], @{$self->{parts}};