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

Attachment: 04default_escape.t
Description: Troff document

--- 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);
 	  }

Reply via email to