aboutsummaryrefslogtreecommitdiff
path: root/docs/repl.js
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-21 21:37:38 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-21 21:39:30 -0400
commit65631adba9a6aeff2f0997c9d46db5be3b2e83a7 (patch)
tree06f53cbc67d6dc22a141128dc2073c4fef2b22d6 /docs/repl.js
parente1ccb8beb37a2134890e8a5c2a26a1439657bd02 (diff)
Use Base64 encoding for code in URLs
Diffstat (limited to 'docs/repl.js')
-rw-r--r--docs/repl.js16
1 files changed, 10 insertions, 6 deletions
diff --git a/docs/repl.js b/docs/repl.js
index 2de1b1fb..2580d325 100644
--- a/docs/repl.js
+++ b/docs/repl.js
@@ -65,7 +65,8 @@ doc.kb.onmousedown = ev => {
}
if (doc.perm) doc.perm.onmouseover = doc.perm.onfocus = () => {
- doc.perm.href='#code='+escape(doc.code.value)
+ let b=(new TextEncoder()).encode(doc.code.value);
+ doc.perm.href='#code='+btoa(String.fromCharCode(...b));
}
let demo = 0;
@@ -89,11 +90,14 @@ if (doc.demo) doc.demo.onclick = () => {
}
if (location.hash) {
- let hp={};
- location.hash.substring(1).split(',').map(s=>{
- let[k,v]=s.split('=');hp[k]=unescape(v)
+ let code='', run=0;
+ location.hash.slice(1).split('&').map(s => {
+ if (s.slice(0,5)==='code=') code=s.slice(5);
+ if (s.slice(0,3)==='run') run=1;
});
- doc.code.value = hp.code||'';
- if (hp.run) repl();
+ let b=atob(code);
+ b=new Uint8Array([...b].map(c=>c.charCodeAt(0)));
+ doc.code.value = (new TextDecoder()).decode(b);
+ if (run) repl();
}
doc.code.focus();