diff options
Diffstat (limited to 'webAO/encoding.js')
| -rw-r--r-- | webAO/encoding.js | 97 |
1 files changed, 45 insertions, 52 deletions
diff --git a/webAO/encoding.js b/webAO/encoding.js index 04a44e7..21b5aa7 100644 --- a/webAO/encoding.js +++ b/webAO/encoding.js @@ -3,11 +3,11 @@ * @param {string} estring the string to be escaped */ export function escapeChat(estring) { - return estring - .replace(/#/g, "<num>") - .replace(/&/g, "<and>") - .replace(/%/g, "<percent>") - .replace(/\$/g, "<dollar>"); + return estring + .replace(/#/g, '<num>') + .replace(/&/g, '<and>') + .replace(/%/g, '<percent>') + .replace(/\$/g, '<dollar>'); } /** @@ -15,27 +15,26 @@ export function escapeChat(estring) { * @param {string} estring the string to be unescaped */ export function unescapeChat(estring) { - return estring - .replace(/<num>/g, "#") - .replace(/<and>/g, "&") - .replace(/<percent>/g, "%") - .replace(/<dollar>/g, "$"); + return estring + .replace(/<num>/g, '#') + .replace(/<and>/g, '&') + .replace(/<percent>/g, '%') + .replace(/<dollar>/g, '$'); } /** * Escapes a string to be HTML-safe. - * + * * XXX: This is unnecessary if we use `createTextNode` instead! * @param {string} unsafe an unsanitized string */ export function safe_tags(unsafe) { - if (unsafe) { - return unsafe - .replace(/>/g, '>') - .replace(/</g, '<'); - } else { - return ""; - } + if (unsafe) { + return unsafe + .replace(/>/g, '>') + .replace(/</g, '<'); + } + return ''; } /** @@ -43,24 +42,21 @@ export function safe_tags(unsafe) { * @param {string} estring the string to be encoded */ export function encodeChat(estring) { - const selectedEncoding = document.getElementById("client_encoding").value; - if (selectedEncoding === "unicode") { - // This approach works by escaping all special characters to Unicode escape sequences. - // Source: https://gist.github.com/mathiasbynens/1243213 - return estring.replace(/[^\0-~]/g, function (ch) { - return "\\u" + ("000" + ch.charCodeAt().toString(16)).slice(-4); - }); - } else if (selectedEncoding === "utf16") { - // Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String - const buffer = new ArrayBuffer(estring.length * 2); - const result = new Uint16Array(buffer); - for (let i = 0, strLen = estring.length; i < strLen; i++) { - result[i] = estring.charCodeAt(i); - } - return String(result); - } else { - return estring; - } + const selectedEncoding = document.getElementById('client_encoding').value; + if (selectedEncoding === 'unicode') { + // This approach works by escaping all special characters to Unicode escape sequences. + // Source: https://gist.github.com/mathiasbynens/1243213 + return estring.replace(/[^\0-~]/g, (ch) => `\\u${(`000${ch.charCodeAt().toString(16)}`).slice(-4)}`); + } if (selectedEncoding === 'utf16') { + // Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String + const buffer = new ArrayBuffer(estring.length * 2); + const result = new Uint16Array(buffer); + for (let i = 0, strLen = estring.length; i < strLen; i++) { + result[i] = estring.charCodeAt(i); + } + return String(result); + } + return estring; } /** @@ -68,25 +64,22 @@ export function encodeChat(estring) { * @param {string} estring the string to be decoded */ export function decodeChat(estring) { - const selectedDecoding = document.getElementById("client_decoding").value; - if (selectedDecoding === "unicode") { - // Source: https://stackoverflow.com/questions/7885096/how-do-i-decode-a-string-with-escaped-unicode - return estring.replace(/\\u([\d\w]{1,})/gi, function (match, group) { - return String.fromCharCode(parseInt(group, 16)); - }); - } else if (selectedDecoding === "utf16") { - // Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String - return String.fromCharCode.apply(null, new Uint16Array(estring.split(","))); - } else { - return estring; - } + const selectedDecoding = document.getElementById('client_decoding').value; + if (selectedDecoding === 'unicode') { + // Source: https://stackoverflow.com/questions/7885096/how-do-i-decode-a-string-with-escaped-unicode + return estring.replace(/\\u([\d\w]{1,})/gi, (match, group) => String.fromCharCode(parseInt(group, 16))); + } if (selectedDecoding === 'utf16') { + // Source: https://developers.google.com/web/updates/2012/06/How-to-convert-ArrayBuffer-to-and-from-String + return String.fromCharCode.apply(null, new Uint16Array(estring.split(','))); + } + return estring; } /** * XXX: a nasty hack made by gameboyprinter. - * @param {string} msg chat message to prepare for display + * @param {string} msg chat message to prepare for display */ export function prepChat(msg) { - // TODO: make this less awful - return unescapeChat(decodeChat(msg)); -}
\ No newline at end of file + // TODO: make this less awful + return unescapeChat(decodeChat(msg)); +} |
