mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-15 04:10:40 -07:00
* docs: add GitHub buttons and improve option docs
* chore: replace husky with prepush check
* docs: revamp homepage and switch to custom GitHub buttons
- Make the docs English-only by removing all zh-cn content, the language switcher UI, and related JS/config
- Rework homepage feature cards (Safe & Typed, Pure JavaScript, Shopify & Jekyll, Streaming) and refresh section colors/layout
- Replace buttons.github.io with custom Star/Sponsor buttons featuring a live star count and dark-mode support
- Drop the buttons.js script and tidy banner, header, footer, and share partials
Co-authored-by: Cursor <[email protected]>
* fix: restore tsconfig settings and changelog build
Re-add suppressImplicitAnyIndexErrors and downlevelIteration removed in
a75033e2c, which broke the rollup TypeScript build on CI. Drop zh-cn
changelog output now that translations were removed.
Co-authored-by: Cursor <[email protected]>
* fix: resolve TS errors without deprecated tsconfig options
Co-authored-by: Cursor <[email protected]>
---------
Co-authored-by: Cursor <[email protected]>
34 lines
644 B
TypeScript
34 lines
644 B
TypeScript
import { isWord } from '../util/character'
|
|
|
|
interface TrieInput<T> {
|
|
[key: string]: T
|
|
}
|
|
|
|
export type Trie<T> = {
|
|
data?: T
|
|
end?: true
|
|
needBoundary?: true
|
|
} & Record<string, any>
|
|
|
|
export function createTrie<T = any> (input: TrieInput<T>): Trie<T> {
|
|
const trie: Trie<T> = {}
|
|
for (const [name, data] of Object.entries(input)) {
|
|
let node = trie
|
|
|
|
for (let i = 0; i < name.length; i++) {
|
|
const c = name[i]
|
|
node[c] = node[c] || {}
|
|
|
|
if (i === name.length - 1 && isWord(name[i])) {
|
|
node[c].needBoundary = true
|
|
}
|
|
|
|
node = node[c]
|
|
}
|
|
|
|
node.data = data
|
|
node.end = true
|
|
}
|
|
return trie
|
|
}
|