From 36b52c6a178b9e12ab3dcf9530fbf9783fa23230 Mon Sep 17 00:00:00 2001 From: vitalif Date: Sun, 9 May 2010 22:35:11 +0000 Subject: [PATCH] nl2br(), dump() --- VMX/Common.pm | 12 +++++++++++- VMX/Template.pm | 13 +++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/VMX/Common.pm b/VMX/Common.pm index c106aa6..59655de 100644 --- a/VMX/Common.pm +++ b/VMX/Common.pm @@ -656,12 +656,22 @@ sub normalize_url ($$) return $url if $url =~ m%^[a-z]+://%iso; if ($url =~ m%^/%so) { - $base = $1 if $base =~ m%^([a-z]+://[^/]*)%so; + $base = $1 if $base =~ m%^([a-z]+://[^/]*)%iso; } elsif ($url =~ /^\?/so) { $base = $& if $base =~ m/^[^\?]*/so; } + elsif ($url =~ s/^((\.\.\/)+)\/*//so) + { + my $n = length($1)/3; + my $d; + $base =~ m%^([a-z]+://[^/]*)/*(.*)$%iso; + ($base, $d) = ($1, $2); + $d =~ s!(/+[^/]*){0,$n}$!!s; + $base .= '/'; + $base .= "$d/" if $d; + } else { $base = $` if $base =~ m%[^\/]*$%so; diff --git a/VMX/Template.pm b/VMX/Template.pm index 0f8f00c..6ca0a0c 100644 --- a/VMX/Template.pm +++ b/VMX/Template.pm @@ -683,6 +683,7 @@ sub function_replace { "resub($_[1], $_[2], $_[3])" } sub function_split { "split($_[1], $_[2], $_[3])" } sub function_quote { "quotequote($_[1])" } *function_q = *function_quote; sub function_html { "htmlspecialchars($_[1])" } *function_s = *function_html; +sub function_nl2br { "resub(qr/\\n/so, '
', $_[1])" } sub function_uriquote{ "uri_escape($_[1])" } *function_uri_escape = *function_urlencode = *function_uriquote; sub function_strip { "strip_tags($_[1])" } *function_t = *function_strip; sub function_h { "strip_unsafe_tags($_[1])" } *function_strip_unsafe = *function_h; @@ -715,6 +716,8 @@ sub function_pop { "pop(\@{$_[1]})"; } sub function_unshift { shift(@_); "unshift(\@{".shift(@_)."}, ".join(",", @_).")"; } sub function_push { shift(@_); "push(\@{".shift(@_)."}, ".join(",", @_).")"; } +sub function_dump { "exec_dump(" . join(",", @_) . ")" } + # map() sub function_map { @@ -778,6 +781,16 @@ sub exec_subst return $str; } +# Data::Dumper +sub exec_dump +{ + require Data::Dumper; + local $Data::Dumper::Indent = 1; + local $Data::Dumper::Varname = ''; + local $Data::Dumper::Sortkeys = 1; + return scalar Data::Dumper::Dumper(@_); +} + 1; __END__