default_escape patches

Tom Heady <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.html-template
Message-ID <[email protected]>
Attached are patches/tests for the following bugs:

* when specifying a default_escape, you can't turn it off

I have fixed ESCAPE=0 and added ESCAPE=NONE to turn off escaping 
altogether for a TMPL_VAR.  The pod was also updated to reflect this change.

Usage:
  <TMPL_VAR foo ESCAPE=NONE>
  <TMPL_VAR foo ESCAPE=0>

* ESCAPE='JS' did not work

I fixed a regex so that single quotes around JS now works.

I have also added a new test file: 04default_escape.t

Tom
04default_escape.t (application/x-troff, 7.6 KB) - not displayed
Template.pm.diff (text/x-patch, 3.6 KB)
--- Template.pm	2005-12-21 15:21:01.000000000 -0800
+++ blib/lib/HTML/Template.pm	2006-03-15 22:40:10.000000000 -0800
@@ -126,8 +126,9 @@
 
 You'll get what you wanted no matter what value happens to be passed in for
 param.  You can also write ESCAPE="HTML", ESCAPE='HTML' and ESCAPE='1'.
-Substitute a 0 for the HTML and you turn off escaping, which is the default
-anyway.
+
+"ESCAPE=0" and "ESCAPE=NONE" turn off escaping, which is the default
+behavior.
 
 There is also the "ESCAPE=URL" option which may be used for VARs that
 populate a URL.  It will do URL escaping, like replacing ' ' with '+'
@@ -1859,18 +1860,13 @@
                       [Ee][Ss][Cc][Aa][Pp][Ee]
                       \s*=\s*
                       (?:
-                         (?: 0 | (?:"0") | (?:'0') )
-                         |
-                         ( 1 | (?:"1") | (?:'1') | 
-                           (?:[Hh][Tt][Mm][Ll]) | 
-                           (?:"[Hh][Tt][Mm][Ll]") |
-                           (?:'[Hh][Tt][Mm][Ll]') |
-                           (?:[Uu][Rr][Ll]) | 
-                           (?:"[Uu][Rr][Ll]") |
-                           (?:'[Uu][Rr][Ll]') |
-                           (?:[Jj][Ss]) |
-                           (?:"[Jj][Ss]") |
-                           (?:'[Jj][Ss]') |
+                        (
+                           (?:["']?0["']?)|
+                           (?:["']?1["']?)|
+                           (?:["']?[Hh][Tt][Mm][Ll]["']?) |
+                           (?:["']?[Uu][Rr][Ll]["']?) |
+                           (?:["']?[Jj][Ss]["']?) |
+                           (?:["']?[Nn][Oo][Nn][Ee]["']?)
                          )                         # $5 => ESCAPE on
                        )
                     )* # allow multiple ESCAPEs
@@ -1929,18 +1925,13 @@
                       [Ee][Ss][Cc][Aa][Pp][Ee]
                       \s*=\s*
                       (?:
-                         (?: 0 | (?:"0") | (?:'0') )
-                         |
-                         ( 1 | (?:"1") | (?:'1') | 
-                           (?:[Hh][Tt][Mm][Ll]) | 
-                           (?:"[Hh][Tt][Mm][Ll]") |
-                           (?:'[Hh][Tt][Mm][Ll]') |
-                           (?:[Uu][Rr][Ll]) | 
-                           (?:"[Uu][Rr][Ll]") |
-                           (?:'[Uu][Rr][Ll]') |
-                           (?:[Jj][Ss]) |
-                           (?:"[Jj][Ss]") |
-                           (?:'[Jj][Ss]') |
+                        (
+                           (?:["']?0["']?)|
+                           (?:["']?1["']?)|
+                           (?:["']?[Hh][Tt][Mm][Ll]["']?) |
+                           (?:["']?[Uu][Rr][Ll]["']?) |
+                           (?:["']?[Jj][Ss]["']?) |
+                           (?:["']?[Nn][Oo][Nn][Ee]["']?)
                          )                         # $15 => ESCAPE on
                        )
                     )* # allow multiple ESCAPEs
@@ -2023,11 +2014,16 @@
 	
 	# if ESCAPE was set, push an ESCAPE op on the stack before
 	# the variable.  output will handle the actual work.
+    # unless of course, they have set escape=0 or escape=none
 	if ($escape) {
           if ($escape =~ /^["']?[Uu][Rr][Ll]["']?$/) {
 	    push(@pstack, $URLESCAPE);
-	  } elsif ($escape =~ /^"?[Jj][Ss]"?$/) {
+        } elsif ($escape =~ /^["']?[Jj][Ss]["']?$/) {
 	    push(@pstack, $JSESCAPE);
+        } elsif ($escape =~ /^["']?0["']?$/) {
+            # do nothing if escape=0
+        } elsif ($escape =~ /^["']?[Nn][Oo][Nn][Ee]["']?$/ ) {
+            # do nothing if escape=none
 	  } else {
 	    push(@pstack, $ESCAPE);
 	  }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.