From 44bebd3456d49e740251c31c413dd37b35ca89ce Mon Sep 17 00:00:00 2001 From: Lewis Moten Date: Thu, 9 May 2024 13:09:31 -0400 Subject: [PATCH] add unicode alphabets and extended ascii --- index.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 8445f37..ca9351a 100644 --- a/index.js +++ b/index.js @@ -92,7 +92,39 @@ const packetReceivedBits = []; const packetUninterlievedBits = []; const packetDecodedBits = []; let packetDataByteCount = -1; -const EMOJI_CHARS = [ +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}", @@ -109,10 +141,22 @@ const EMOJI_CHARS = [ "\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}", + "\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 ]; -const PRINTABLE_CHARS = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890`-=~!@#$%^&*()_+[]\\{}|;':\",./<>?".split(''); -PRINTABLE_CHARS.push(...EMOJI_CHARS); function randomCharacter() { const index = Math.floor(Math.random() * PRINTABLE_CHARS.length);