autogenerating replace for old behavior of escape()

by johnwun

HTML

<pre class="enc"></pre>
<pre class="dec"></pre>
<pre class="proof"></pre>

JavaScript

// Note: this will not run in FF v28.0 and above as escape is broken 

var nonAlphaChars = "~`!@#$%^&*()_+-={}|[]\\  :;\"'<>?,./";
var arr = nonAlphaChars.split(""); 
var encArr = [];
var decArr = [];
var proofArr = [];
for(var c=0;c<arr.length;c++){
    if(encodeURI(arr[c]) != escape(arr[c])){
        encArr.push("str =  encodeURI(str).replace(/["+arr[c]+"]/g, \""+escape(arr[c])+"\");")
        decArr.push("str =  decodeURI(str).replace(/"+escape(arr[c])+"/g, \""+arr[c]+"\");")
    
    }
};

//proof - Different in Firefox v28
for(var c=0;c<arr.length;c++){
  proofArr.push(arr[c]+" is "+escape(arr[c]));
};
$(".enc").html(encArr.join("\n"));
$(".dec").html(decArr.join("\n"));
$(".proof").html(proofArr.join("\n"));