about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/util/emoji/unicode_to_filename.js
blob: c75c4cd7d05fe1bb47303bb673d79dccdba8951a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// taken from:
// https://github.com/twitter/twemoji/blob/47732c7/twemoji-generator.js#L848-L866
exports.unicodeToFilename = (str) => {
  let result = '';
  let charCode = 0;
  let p = 0;
  let i = 0;
  while (i < str.length) {
    charCode = str.charCodeAt(i++);
    if (p) {
      if (result.length > 0) {
        result += '-';
      }
      result += (0x10000 + ((p - 0xD800) << 10) + (charCode - 0xDC00)).toString(16);
      p = 0;
    } else if (0xD800 <= charCode && charCode <= 0xDBFF) {
      p = charCode;
    } else {
      if (result.length > 0) {
        result += '-';
      }
      result += charCode.toString(16);
    }
  }
  return result;
};