runes2
Version:
Unicode-aware JS string splitting, typescript version
1 lines • 15.4 kB
Source Map (JSON)
{"version":3,"file":"index.umd.development.cjs","sources":["../src/index.ts"],"sourcesContent":["export const enum EnumRunesCode\r\n{\r\n\tHIGH_SURROGATE_START = 0xd800,\r\n\tHIGH_SURROGATE_END = 0xdbff,\r\n\r\n\tLOW_SURROGATE_START = 0xdc00,\r\n\r\n\tREGIONAL_INDICATOR_START = 0x1f1e6,\r\n\tREGIONAL_INDICATOR_END = 0x1f1ff,\r\n\r\n\tFITZPATRICK_MODIFIER_START = 0x1f3fb,\r\n\tFITZPATRICK_MODIFIER_END = 0x1f3ff,\r\n\r\n\tVARIATION_MODIFIER_START = 0xfe00,\r\n\tVARIATION_MODIFIER_END = 0xfe0f,\r\n\r\n\tDIACRITICAL_MARKS_START = 0x20d0,\r\n\tDIACRITICAL_MARKS_END = 0x20ff,\r\n\r\n\tSUBDIVISION_INDICATOR_START = 0x1f3f4,\r\n\tTAGS_START = 0xe0000,\r\n\tTAGS_END = 0xe007f,\r\n\r\n\tZWJ = 0x200d,\r\n}\r\n\r\nexport const GRAPHEMES = Object.freeze([\r\n\t0x0308, // ( ◌̈ ) COMBINING DIAERESIS\r\n\t0x0937, // ( ष ) DEVANAGARI LETTER SSA\r\n\t0x093F, // ( ि ) DEVANAGARI VOWEL SIGN I\r\n\t0x0BA8, // ( ந ) TAMIL LETTER NA\r\n\t0x0BBF, // ( ி ) TAMIL VOWEL SIGN I\r\n\t0x0BCD, // ( ◌்) TAMIL SIGN VIRAMA\r\n\t0x0E31, // ( ◌ั ) THAI CHARACTER MAI HAN-AKAT\r\n\t0x0E33, // ( ำ ) THAI CHARACTER SARA AM\r\n\t0x0E40, // ( เ ) THAI CHARACTER SARA E\r\n\t0x0E49, // ( เ ) THAI CHARACTER MAI THO\r\n\t0x1100, // ( ᄀ ) HANGUL CHOSEONG KIYEOK\r\n\t0x1161, // ( ᅡ ) HANGUL JUNGSEONG A\r\n\t0x11A8, // ( ᆨ ) HANGUL JONGSEONG KIYEOK\r\n]);\r\n\r\nexport const enum EnumCodeUnits\r\n{\r\n\tunit_1 = 1,\r\n\tunit_2 = 2,\r\n\tunit_4 = 4,\r\n}\r\n\r\nexport function runes(string: string): string[]\r\n{\r\n\tif (typeof string !== 'string')\r\n\t{\r\n\t\tthrow new TypeError('string cannot be undefined or null')\r\n\t}\r\n\tconst result: string[] = []\r\n\tlet i = 0\r\n\tlet increment = 0\r\n\twhile (i < string.length)\r\n\t{\r\n\t\tincrement += nextUnits(i + increment, string)\r\n\t\tif (isGrapheme(string[i + increment]))\r\n\t\t{\r\n\t\t\tincrement++\r\n\t\t}\r\n\t\tif (isVariationSelector(string[i + increment]))\r\n\t\t{\r\n\t\t\tincrement++\r\n\t\t}\r\n\t\tif (isDiacriticalMark(string[i + increment]))\r\n\t\t{\r\n\t\t\tincrement++\r\n\t\t}\r\n\t\tif (isZeroWidthJoiner(string[i + increment]))\r\n\t\t{\r\n\t\t\tincrement++\r\n\t\t\tcontinue\r\n\t\t}\r\n\t\tresult.push(string.substring(i, i + increment))\r\n\t\ti += increment\r\n\t\tincrement = 0\r\n\t}\r\n\treturn result\r\n}\r\n\r\n// Decide how many code units make up the current character.\r\n// BMP characters: 1 code unit\r\n// Non-BMP characters (represented by surrogate pairs): 2 code units\r\n// Emoji with skin-tone modifiers: 4 code units (2 code points)\r\n// Country flags: 4 code units (2 code points)\r\n// Variations: 2 code units\r\n// Subdivision flags: 14 code units (7 code points)\r\nexport function nextUnits(i: number, string: string)\r\n{\r\n\tconst current = string[i]\r\n\t// If we don't have a value that is part of a surrogate pair, or we're at\r\n\t// the end, only take the value at i\r\n\tif (!isFirstOfSurrogatePair(current) || i === string.length - 1)\r\n\t{\r\n\t\treturn EnumCodeUnits.unit_1\r\n\t}\r\n\r\n\tconst currentPair = current + string[i + 1]\r\n\tlet nextPair = string.substring(i + 2, i + 5)\r\n\r\n\t// Country flags are comprised of two regional indicator symbols,\r\n\t// each represented by a surrogate pair.\r\n\t// See http://emojipedia.org/flags/\r\n\t// If both pairs are regional indicator symbols, take 4\r\n\tif (isRegionalIndicator(currentPair) && isRegionalIndicator(nextPair))\r\n\t{\r\n\t\treturn EnumCodeUnits.unit_4\r\n\t}\r\n\r\n\t// https://unicode.org/emoji/charts/full-emoji-list.html#subdivision-flag\r\n\t// See https://emojipedia.org/emoji-tag-sequence/\r\n\t// If nextPair is in Tags(https://en.wikipedia.org/wiki/Tags_(Unicode_block)),\r\n\t// then find next closest U+E007F(CANCEL TAG)\r\n\tif (isSubdivisionFlag(currentPair) &&\tisSupplementarySpecialpurposePlane(nextPair))\r\n\t{\r\n\t\treturn string.slice(i).indexOf(String.fromCodePoint(EnumRunesCode.TAGS_END)) + 2\r\n\t}\r\n\r\n\t// If the next pair make a Fitzpatrick skin tone\r\n\t// modifier, take 4\r\n\t// See http://emojipedia.org/modifiers/\r\n\t// Technically, only some code points are meant to be\r\n\t// combined with the skin tone modifiers. This function\r\n\t// does not check the current pair to see if it is\r\n\t// one of them.\r\n\tif (isFitzpatrickModifier(nextPair))\r\n\t{\r\n\t\treturn EnumCodeUnits.unit_4\r\n\t}\r\n\treturn EnumCodeUnits.unit_2\r\n}\r\n\r\nexport function isFirstOfSurrogatePair(string: string)\r\n{\r\n\treturn string && betweenInclusive(string[0].charCodeAt(0), EnumRunesCode.HIGH_SURROGATE_START, EnumRunesCode.HIGH_SURROGATE_END)\r\n}\r\n\r\nexport function isRegionalIndicator(string: string)\r\n{\r\n\treturn betweenInclusive(codePointFromSurrogatePair(string), EnumRunesCode.REGIONAL_INDICATOR_START, EnumRunesCode.REGIONAL_INDICATOR_END)\r\n}\r\n\r\nexport function isSubdivisionFlag(string: string)\r\n{\r\n\treturn betweenInclusive(codePointFromSurrogatePair(string),\tEnumRunesCode.SUBDIVISION_INDICATOR_START, EnumRunesCode.SUBDIVISION_INDICATOR_START)\r\n}\r\n\r\nexport function isFitzpatrickModifier(string: string)\r\n{\r\n\treturn betweenInclusive(codePointFromSurrogatePair(string), EnumRunesCode.FITZPATRICK_MODIFIER_START, EnumRunesCode.FITZPATRICK_MODIFIER_END)\r\n}\r\n\r\nexport function isVariationSelector(string: string)\r\n{\r\n\treturn typeof string === 'string' && betweenInclusive(string.charCodeAt(0), EnumRunesCode.VARIATION_MODIFIER_START, EnumRunesCode.VARIATION_MODIFIER_END)\r\n}\r\n\r\nexport function isDiacriticalMark(string: string)\r\n{\r\n\treturn typeof string === 'string' && betweenInclusive(string.charCodeAt(0), EnumRunesCode.DIACRITICAL_MARKS_START, EnumRunesCode.DIACRITICAL_MARKS_END)\r\n}\r\n\r\nexport function isSupplementarySpecialpurposePlane(string: string)\r\n{\r\n\tconst codePoint = string.codePointAt(0)\r\n\treturn (typeof string === 'string' &&\ttypeof codePoint === 'number' && betweenInclusive(codePoint, EnumRunesCode.TAGS_START, EnumRunesCode.TAGS_END))\r\n}\r\n\r\nexport function isGrapheme(string: string)\r\n{\r\n\treturn typeof string === 'string' && GRAPHEMES.includes(string.charCodeAt(0))\r\n}\r\n\r\nexport function isZeroWidthJoiner(string: string)\r\n{\r\n\treturn typeof string === 'string' && string.charCodeAt(0) === EnumRunesCode.ZWJ\r\n}\r\n\r\nexport function codePointFromSurrogatePair(pair: string)\r\n{\r\n\tconst highOffset = pair.charCodeAt(0) - EnumRunesCode.HIGH_SURROGATE_START\r\n\tconst lowOffset = pair.charCodeAt(1) - EnumRunesCode.LOW_SURROGATE_START\r\n\treturn (highOffset << 10) + lowOffset + 0x10000\r\n}\r\n\r\nexport function betweenInclusive(value: number, lower: number, upper: number)\r\n{\r\n\treturn value >= lower && value <= upper\r\n}\r\n\r\nexport function substring(string: string, start?: number, width?: number)\r\n{\r\n\tconst chars = runes(string)\r\n\tif (start === undefined)\r\n\t{\r\n\t\treturn string\r\n\t}\r\n\tif (start >= chars.length)\r\n\t{\r\n\t\treturn ''\r\n\t}\r\n\tconst rest = chars.length - start\r\n\tconst stringWidth = width === undefined ? rest : width\r\n\tlet endIndex = start + stringWidth\r\n\tif (endIndex > (start + rest))\r\n\t{\r\n\t\tendIndex = undefined\r\n\t}\r\n\treturn chars.slice(start, endIndex).join('')\r\n}\r\n\r\nexport { substring as substr }\r\n\r\n// @ts-ignore\r\nif (process.env.TSDX_FORMAT !== 'esm')\r\n{\r\n\tObject.defineProperty(runes, 'runes', { value: runes });\r\n\tObject.defineProperty(runes, 'default', { value: runes });\r\n\tObject.defineProperty(runes, \"__esModule\", { value: true });\r\n\r\n\tObject.defineProperty(runes, 'substr', { value: substring });\r\n\tObject.defineProperty(runes, 'substring', { value: substring });\r\n\r\n\t// @ts-ignore\r\n\tObject.defineProperty(runes, 'EnumRunesCode', { value: EnumRunesCode });\r\n\t// @ts-ignore\r\n\tObject.defineProperty(runes, 'EnumCodeUnits', { value: EnumCodeUnits });\r\n\tObject.defineProperty(runes, 'GRAPHEMES', { value: GRAPHEMES });\r\n}\r\n\r\nexport default runes\r\n"],"names":["EnumRunesCode","GRAPHEMES","Object","freeze","EnumCodeUnits","runes","string","TypeError","result","i","increment","length","nextUnits","isGrapheme","isVariationSelector","isDiacriticalMark","isZeroWidthJoiner","push","substring","current","isFirstOfSurrogatePair","currentPair","nextPair","isRegionalIndicator","isSubdivisionFlag","isSupplementarySpecialpurposePlane","slice","indexOf","String","fromCodePoint","isFitzpatrickModifier","betweenInclusive","charCodeAt","codePointFromSurrogatePair","codePoint","codePointAt","includes","pair","highOffset","lowOffset","value","lower","upper","start","width","chars","undefined","rest","stringWidth","endIndex","join","defineProperty"],"mappings":"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"}