30 lines
785 B
JavaScript
30 lines
785 B
JavaScript
import data from './data/bidiBrackets.data.js'
|
|
import { parseCharacterMap } from './util/parseCharacterMap.js'
|
|
|
|
let openToClose, closeToOpen, canonical
|
|
|
|
function parse () {
|
|
if (!openToClose) {
|
|
//const start = performance.now()
|
|
let { map, reverseMap } = parseCharacterMap(data.pairs, true)
|
|
openToClose = map
|
|
closeToOpen = reverseMap
|
|
canonical = parseCharacterMap(data.canonical, false).map
|
|
//console.log(`brackets parsed in ${performance.now() - start}ms`)
|
|
}
|
|
}
|
|
|
|
export function openingToClosingBracket (char) {
|
|
parse()
|
|
return openToClose.get(char) || null
|
|
}
|
|
|
|
export function closingToOpeningBracket (char) {
|
|
parse()
|
|
return closeToOpen.get(char) || null
|
|
}
|
|
|
|
export function getCanonicalBracket (char) {
|
|
parse()
|
|
return canonical.get(char) || null
|
|
}
|