aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-13 21:34:48 -0800
commit76cb9c2a39d477a64824a985ade40507e3bbade1 (patch)
tree41e997aa9c6f538d3a136af61dae9424db2005a9 /vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js
parent819a39a21ac992b1393244a4c283bbb125208c69 (diff)
downloadneko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.gz
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.tar.bz2
neko-76cb9c2a39d477a64824a985ade40507e3bbade1.zip
feat(vanilla): add testing infrastructure and tests (NK-wjnczv)
Diffstat (limited to 'vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js')
-rw-r--r--vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js b/vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js
new file mode 100644
index 0000000..86a96b8
--- /dev/null
+++ b/vanilla/node_modules/bidi-js/src/util/parseCharacterMap.js
@@ -0,0 +1,30 @@
+/**
+ * Parses an string that holds encoded codepoint mappings, e.g. for bracket pairs or
+ * mirroring characters, as encoded by scripts/generateBidiData.js. Returns an object
+ * holding the `map`, and optionally a `reverseMap` if `includeReverse:true`.
+ * @param {string} encodedString
+ * @param {boolean} includeReverse - true if you want reverseMap in the output
+ * @return {{map: Map<number, number>, reverseMap?: Map<number, number>}}
+ */
+export function parseCharacterMap (encodedString, includeReverse) {
+ const radix = 36
+ let lastCode = 0
+ const map = new Map()
+ const reverseMap = includeReverse && new Map()
+ let prevPair
+ encodedString.split(',').forEach(function visit(entry) {
+ if (entry.indexOf('+') !== -1) {
+ for (let i = +entry; i--;) {
+ visit(prevPair)
+ }
+ } else {
+ prevPair = entry
+ let [a, b] = entry.split('>')
+ a = String.fromCodePoint(lastCode += parseInt(a, radix))
+ b = String.fromCodePoint(lastCode += parseInt(b, radix))
+ map.set(a, b)
+ includeReverse && reverseMap.set(b, a)
+ }
+ })
+ return { map, reverseMap }
+}