value_extended —
Interchange 5.9.0:
Source: lib/Vend/Interpolate.pm
Lines: 2387
sub tag_value_extended { my($var, $opt) = @_; my $vspace = $opt->{values_space}; my $vref; if (defined $vspace) { if ($vspace eq '') { $vref = $Vend::Session->{values}; } else { $vref = $Vend::Session->{values_repository}{$vspace} ||= {}; } } else { $vref = $::Values; } my $yes = $opt->{yes} || 1; my $no = $opt->{'no'} || ''; if($opt->{test}) { $opt->{test} =~ /(?:is)?put/i and return defined $CGI::put_ref ? $yes : $no; $opt->{test} =~ /(?:is)?file/i and return defined $CGI::file{$var} ? $yes : $no; $opt->{test} =~ /defined/i and return defined $CGI::values{$var} ? $yes : $no; return length $CGI::values{$var} if $opt->{test} =~ /length|size/i; return ''; } if($opt->{put_contents}) { return undef if ! defined $CGI::put_ref; return $$CGI::put_ref; } my $val = $CGI::values{$var} || $vref->{$var} || return undef; $val =~ s/</</g unless $opt->{enable_html}; $val =~ s/\[/[/g unless $opt->{enable_itl}; if($opt->{file_contents}) { return '' if ! defined $CGI::file{$var}; return $CGI::file{$var}; } if($opt->{put_ref}) { return $CGI::put_ref; } if($opt->{outfile}) { my $file = $opt->{outfile}; $file =~ s/^\s+//; $file =~ s/\s+$//; unless (Vend::File::allowed_file($file)) { Vend::File::log_file_violation($file, 'value-extended'); return ''; } if($opt->{ascii}) { my $replace = $^O =~ /win32/i ? "\r\n" : "\n"; if($CGI::file{$var} !~ /\n/) { # Must be a mac file. $CGI::file{$var} =~ s/\r/$replace/g; } elsif ( $CGI::file{$var} =~ /\r\n/) { # Probably a PC file $CGI::file{$var} =~ s/\r\n/$replace/g; } else { $CGI::file{$var} =~ s/\n/$replace/g; } } if($opt->{maxsize} and length($CGI::file{$var}) > $opt->{maxsize}) { logError( "Uploaded file write of %s bytes greater than maxsize %s. Aborted.", length($CGI::file{$var}), $opt->{maxsize}, ); return $no; } #::logDebug(">$file \$CGI::file{$var}" . uneval($opt)); $opt->{encoding} ||= $CGI::file_encoding{$var}; Vend::Util::writefile(">$file", \$CGI::file{$var}, $opt) and return $yes; return $no; } my $joiner; if (defined $opt->{joiner}) { $joiner = $opt->{joiner}; if($joiner eq '\n') { $joiner = "\n"; } elsif($joiner =~ m{\\}) { $joiner = $ready_safe->reval("qq{$joiner}"); } } else { $joiner = ' '; } my $index = defined $opt->{'index'} ? $opt->{'index'} : '*'; $index = '*' if $index =~ /^\s*\*?\s*$/; my @ary; if (!ref $val) { @ary = split /\0/, $val; } elsif($val =~ /ARRAY/) { @ary = @$val; } else { logError( "value-extended %s: passed non-scalar, non-array object", $var); } return join " ", 0 .. $#ary if $opt->{elements}; eval { @ary = @ary[$ready_safe->reval( $index eq '*' ? "0 .. $#ary" : $index )]; }; logError("value-extended $var: bad index") if $@; if($opt->{filter}) { for(@ary) { $_ = filter_value($opt->{filter}, $_, $var); } } return join $joiner, @ary; }