From 65631adba9a6aeff2f0997c9d46db5be3b2e83a7 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Fri, 21 Aug 2020 21:37:38 -0400 Subject: Use Base64 encoding for code in URLs --- docs/repl.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'docs') 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(); -- cgit v1.2.3