refactor: Tag class support in registerTag()

This commit is contained in:
Jun Yang
2022-11-27 14:04:01 +08:00
parent 1f6ce7c822
commit 92992689cd
145 changed files with 694 additions and 768 deletions
+12 -4
View File
@@ -1,14 +1,22 @@
import { Operators } from '../render/operator'
import { Operators, OperatorHandler } from '../render/operator'
import { IDENTIFIER, TYPES } from '../util/character'
export interface Trie {
[key: string]: any;
interface TrieLeafNode {
handler: OperatorHandler;
end: true;
needBoundary?: true;
}
export interface Trie {
[key: string]: Trie | TrieLeafNode;
}
export type TrieNode = Trie | TrieLeafNode
export function createTrie (operators: Operators): Trie {
const trie: Trie = {}
for (const [name, handler] of Object.entries(operators)) {
let node = trie
let node: Trie | TrieLeafNode = trie
for (let i = 0; i < name.length; i++) {
const c = name[i]