UNPKG

runes2

Version:

Unicode-aware JS string splitting, typescript version

1 lines 15.5 kB
{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts","../src/index.cts"],"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","import { default as _ } from './index';\n\n// @ts-ignore\nexport = _\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","module","exports","_"],"mappings":"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"}