refactor: Still trying to reorganize edit mode to be more robust
This commit is contained in:
parent
85faf502c4
commit
c5a5b26797
487 changed files with 94669 additions and 144 deletions
30
node_modules/bidi-js/src/util/parseCharacterMap.js
generated
vendored
Normal file
30
node_modules/bidi-js/src/util/parseCharacterMap.js
generated
vendored
Normal file
|
|
@ -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 }
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue