Test Encode / Decode embed data
by Ben Clayton
HTML
Input: <input id='inp'/><br/>
Encoded: <input id='enc'/><br/>
<div id="enc2"></div>
Decoded: <input id='dec'/><br/>
<div id="mess"></div>
CSS
.mydata {
width:400px;
}
.label {
display:inline-block;
width:200px;
}
input {
width:500px;
}
#enc2 {
margin-left:70px;
height:24px;
}
}
JavaScript
function encodeEmbedString(s){
var sout='';
for (var i=0;i<s.length;i++){
var c=s[i];
var v=s.charCodeAt(i);
if ( /[&;]/.test(c) ){
sout+="\\"+c;
}else if ( /[a-zA-Z0-9]/.test(c)){
sout+=c;
}else{
sout+='&'+v+';';
}
}
return sout;
}
function decodeEmbedString(s){
var esc=0;
var state=0;
var n=0;
var sout='';
for (var i=0;i<s.length;i++){
var c=s[i];
if(esc){
sout+=c;
esc=0;
}else if ( c=='&' ){
state=1;
n=0;
}else if(c==';'){
sout+=String.fromCharCode(n)
state=0;
}else if(c=='\\'){
esc=1;
}else if(state){
if(c!='#'){
n=(n*10)+parseInt(c);
}
}else{
sout+=c;
}
}
return sout;
}
function doit(){
var i = $("#inp").val();
var e=encodeEmbedString(i);
var d=decodeEmbedString(e);
$("#enc").val(e);
$("#enc2").html(e);
$("#dec").val(d);
$("#mess").html((i==d)?'good':"<font color='red'>bad</font>")
}
//debugger;
$("#inp").on('keyup',function(){doit()});
doit()