Last active
November 14, 2020 04:39
-
-
Save octaviogb/00163424a5e54598cb2d447abb2d222b to your computer and use it in GitHub Desktop.
Compactar o código como no https://www.dwitter.net/d/20584
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function compact(f) { | |
return unescape( | |
f | |
.toString() // garanto que é uma string | |
.split('') // transformo em array de caracteres | |
.map( // vou iterar e transformar esses caracteres | |
(d,n) => `%uD${n%2?'C':'8'}${d.charCodeAt(0).toString(16)}`) | |
/* | |
aqui acontece a magia | |
D é o caracter | |
N é o índice da iteração | |
Os caracteres chineses são uma combinação de dois caracteres unicode | |
Um é /xD8.. e o outro /xDC.. | |
Assim... eu converto o meu caracter atual em hex (/x) | |
Coloco o prefixo "u" de unicode | |
Coloco o prefixo "%" de encoding | |
e itero | |
*/ | |
.join(''))} // no final, junto tudo em uma string | |
const c = compact("alert('teste')") // para essa string, o resultado é: 𨑬𩑲𭀨𩑳𭁥 | |
unescape(escape(c).replace(/u../g,'')) // aqui é como você faz o caminho contrário, usando Regex | |
console.log("的".charCodeAt(0).toString(15)) // Podem ver o comportamento de um caracter chinês aqui |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment