From 2c3e4aa5bc27755914860aea47758c835733a2ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Sch=C3=B6dler?= Date: Sat, 10 Jun 2023 22:24:57 +0200 Subject: [PATCH] Fix contrast yet again, cleanup --- package-lock.json | 4 +- src/model/trie.ts | 109 ---------------------------------------------- styles.css | 1 - 3 files changed, 2 insertions(+), 112 deletions(-) delete mode 100644 src/model/trie.ts diff --git a/package-lock.json b/package-lock.json index e6c3f3e..6f29124 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "crossbow", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "crossbow", - "version": "1.2.0", + "version": "1.3.0", "license": "gplv3", "devDependencies": { "@types/jest": "^29.5.1", diff --git a/src/model/trie.ts b/src/model/trie.ts deleted file mode 100644 index fc94750..0000000 --- a/src/model/trie.ts +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright (C) 2023 - shoedler - github.com/shoedler -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -export type Trie = { - value?: T; - next: { [key: string]: Trie }; -}; - -const createTrie = (items: T[], keySelector: (item: T) => string): Trie => { - const root: Trie = { next: {} }; - - for (let i = 0; i < items.length; i++) { - const item = items[i]; - addOrUpdate(root, item, keySelector, (o, n) => { - throw new Error(`Duplicate entry: ${JSON.stringify(n)}`); - }); - } - - return root; -}; - -const addOrUpdate = ( - root: Trie, - item: T, - keySelector: (item: T) => string, - update: (oldItem: T, newItem: T) => T -): void => { - const key = keySelector(item).toLocaleLowerCase(); - - let trie = root; - - for (let i = 0; i < key.length; i++) { - const c = key[i]; - - trie.next[c] = trie.next[c] || { next: {} }; - - if (i === key.length - 1) { - if (trie.next[c].value) { - trie.next[c].value = update(trie.next[c].value as T, item); - } else { - trie.next[c].value = item; - } - - break; - } - - trie = trie.next[c] as Trie; - } -}; - -const tryGet = (root: Trie, key: string): T | undefined => { - let trie = root; - let i = 0; - - while (i < key.length && trie) { - trie = trie.next[key[i++]] as Trie; - } - - return trie.value as T | undefined; -}; - -const toArray = (root: Trie): T[] => { - const result: T[] = []; - - for (const value of traverse(root)) { - result.push(value); - } - - return result; -}; - -const length = (root: Trie): number => { - let result = 0; - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - for (const _ of traverse(root)) { - result++; - } - - return result; -}; - -function* traverse(trie: Trie): Generator { - if (trie.value) { - yield trie.value; - } - - for (const key in trie.next) { - yield* traverse(trie.next[key]); - } -} - -export const TrieTools = { - createTrie, - addOrUpdate, - tryGet, - toArray, - length, - traverse, -}; diff --git a/styles.css b/styles.css index 327ad37..ecdce60 100644 --- a/styles.css +++ b/styles.css @@ -7,7 +7,6 @@ margin-left: 0.2rem; font-size: var(--font-smallest); color: var(--text-muted); - opacity: var(--icon-opacity); padding: 0.2rem; padding-top: 0rem; padding-bottom: 0.1rem;