Files
data-over-audio/Randomizer.js
2024-05-10 04:42:51 -04:00

73 lines
3.0 KiB
JavaScript

const UNICODE_TEXT = [
'\u0041', // Latin
'\u0410', // Cyrillic
'\u0391', // Greek
'\u05D0', // Hebrew
'\u0627', // Arabic
'\u0905', // Devanagari
'\u0E01', // Thai
'\u3042', // Japanese Hiragana
'\u30A2', // Japanese Katakana
'\uAC00', // Korean Hangul
'\u10D0', // Georgian
'\u0531', // Armenian
'\u4E00', // Chinese
'\u0F40', // Tibetan
'\u0985', // Bengali
'\u0A85', // Gujarati
'\u0A05', // Gurmukhi
'\u0C85', // Kannada
'\u1780', // Khmer
'\u0E81', // Lao
'\u0D05', // Malayalam
'\u1000', // Myanmar
'\u0D85', // Sinhala
'\u0B85', // Tamil
'\u0C05', // Telugu
'\u1200', // Amharic
'\u1000', // Burmese
'\u0C85', // Kannada
'\u0B05', // Oriya
'\u0D85' // Sinhala
];
const UNICODE_EMOJI = [
"\u{1F600}", "\u{1F601}", "\u{1F602}", "\u{1F923}", "\u{1F603}", "\u{1F604}", "\u{1F605}", "\u{1F606}",
"\u{1F609}", "\u{1F60A}", "\u{1F60B}", "\u{1F60E}", "\u{1F60D}", "\u{1F618}", "\u{1F617}", "\u{1F619}",
"\u{1F61A}", "\u{1F61B}", "\u{263A}", "\u{1F642}", "\u{1F60F}", "\u{1F60C}", "\u{1F61C}", "\u{1F61D}",
"\u{1F61E}", "\u{1F61F}", "\u{1F612}", "\u{1F613}", "\u{1F614}", "\u{1F615}", "\u{1F643}", "\u{1F610}",
"\u{1F611}", "\u{1F636}", "\u{1F607}", "\u{1F60F}", "\u{1F623}", "\u{1F625}", "\u{1F62E}", "\u{1F62F}",
"\u{1F62A}", "\u{1F62B}", "\u{1F634}", "\u{1F60D}", "\u{1F615}", "\u{1F625}", "\u{1F622}", "\u{1F62D}",
"\u{1F631}", "\u{1F616}", "\u{1F623}", "\u{1F624}", "\u{1F630}", "\u{1F621}", "\u{1F620}", "\u{1F637}",
"\u{1F912}", "\u{1F915}", "\u{1F922}", "\u{1F92A}", "\u{1F605}", "\u{1F624}", "\u{1F62C}", "\u{1F687}",
"\u{1F636}", "\u{1F610}", "\u{1F611}", "\u{1F974}", "\u{1F612}", "\u{1F644}", "\u{1F913}", "\u{1F615}",
"\u{1F62C}", "\u{1F636}", "\u{1F922}", "\u{1F927}", "\u{1F974}", "\u{1F975}", "\u{1F976}", "\u{1F92E}",
"\u{1F927}", "\u{1F976}", "\u{1F925}", "\u{1F92F}", "\u{1F975}", "\u{1F976}", "\u{1F92E}", "\u{1F925}",
"\u{1F924}", "\u{1F631}", "\u{1F634}", "\u{1F62C}", "\u{1F91E}", "\u{1F621}", "\u{1F608}", "\u{1F47F}",
"\u{1F480}", "\u{1F47B}", "\u{1F47D}", "\u{1F916}", "\u{1F608}", "\u{1F47A}", "\u{1F479}", "\u{1F47C}",
"\u{1F47E}", "\u{1F916}", "\u{1F4A9}", "\u{1F608}", "\u{1F4A4}", "\u{1F525}", "\u{1F4A3}", "\u{1F52E}",
"\u{1F4A2}", "\u{1F4A1}", "\u{1F6A8}", "\u{1F3B6}", "\u{1F519}", "\u{1F5E8}", "\u{1F4F3}", "\u{1F4F1}",
"\u{1F4F2}", "\u{1F514}", "\u{1F3A4}", "\u{1F4F9}", "\u{1F4F7}", "\u{1F4F8}", "\u{1F4F4}", "\u{1F4F6}",
"\u{1F3AF}", "\u{1F4FD}", "\u{1F4FC}", "\u{1F4E5}"
];
const ASCII_CHARS = new Array(255)
.fill(0)
.map((_, code) => String.fromCharCode(code))
.filter((_, code) =>
// printable ascii
(code >= 32 && code <= 126) ||
// extended ascii (accented letters, currency, etc.)
(code >= 160 && code <= 255)
);
const PRINTABLE_CHARS = [
...UNICODE_EMOJI,
...ASCII_CHARS,
...UNICODE_TEXT
];
function randomCharacter() {
const index = Math.floor(Math.random() * PRINTABLE_CHARS.length);
return PRINTABLE_CHARS[index];
}
export const text = (length) => new Array(length).fill(0).map(randomCharacter).join('');