Skip to content

Instantly share code, notes, and snippets.

@ghostdevv
Last active August 13, 2022 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ghostdevv/768be3d3944adfd642ca7f0460987a43 to your computer and use it in GitHub Desktop.
Save ghostdevv/768be3d3944adfd642ca7f0460987a43 to your computer and use it in GitHub Desktop.
Ender Translator
{const ender_chars='⏃⏚☊⎅⟒⎎☌⊑⟟⟊☍⌰⋔⋏⍜⌿☌⍀⌇⏁⎍⎐⍙⌖⊬⋉'.split('');const eng_to_ender=Object.fromEntries('abcdefghijklmnopqrstuvwxyz'.split('').map((c,i)=>[c,ender_chars[i]]));const ender_to_eng=Object.fromEntries(Object.entries(eng_to_ender).map((x)=>x.reverse()));const to_ender=(c)=>eng_to_ender[c]??c;const to_eng=(c)=>ender_to_eng[c]??c;const translate=(str,fn)=>str.split('').map(fn).join('');function run(){const elements=document.querySelectorAll('[id^=message-content]:not([data-ender-parsed=true])',);for(const element of elements){element.innerHTML=element.innerHTML.replace(new RegExp(`[${ender_chars.join('')} ,.!?\\-;']+`,'gi'),(match)=>{return ender_chars.some((c)=>match.includes(c))?`<span title="${translate(match,to_eng)}">${ match }</span>`:match},);element.dataset.enderParsed='true'}}setInterval(run,1000);const template=`<form id="ender-translation-form"><input id="ender-translaion" name="text" required /><button type="submit">Translate</button></form>`;const element=document.createElement('div');element.innerHTML=template;element.style.position='fixed';element.style.bottom=0;element.style.right=0;element.style.zIndex=0;element.style.padding='16px';element.style.color='#fff';document.body.appendChild(element);const form=document.getElementById('ender-translation-form');form.addEventListener('submit',(event)=>{event.preventDefault();const data=new FormData(event.target);const text=data.get('text');navigator.clipboard.writeText(translate(text,to_ender))})}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment