feat: add semantic tackle glyphs

This commit is contained in:
ik
2026-09-12 15:30:40 +07:00
parent c3e847c249
commit 80d534d549
12 changed files with 59 additions and 6 deletions
+20
View File
@@ -0,0 +1,20 @@
export type TackleVisualKind = "spinner" | "wobbler" | "soft" | "boilie" | "worm" | "rig" | "unknown";
const KIND_TERMS: Array<[TackleVisualKind, RegExp]> = [
["spinner", /spinner|spiker|spoon|блесн|вращал|колеб|вертуш|spinner|blinker/i],
["wobbler", /wobbler|воблер|minnow|crank|popper|jerk|walker|plug/i],
["soft", /shad|twister|твистер|силикон|soft|vibro|виброхвост/i],
["boilie", /бойл|boilie|pellet|пеллет|pop[- ]?up/i],
["worm", /черв|worm|мотыл|опарыш|личин|maggot|bloodworm/i],
["rig", /оснаст|монтаж|rig|hook|крюч|leader|повод/i],
];
export function tackleVisualKind(name?: string | null): TackleVisualKind {
if (!name?.trim()) return "unknown";
return KIND_TERMS.find(([, pattern]) => pattern.test(name))?.[0] ?? "unknown";
}
export function tackleVisualTone(name?: string | null): number {
return [...(name?.trim().toLocaleLowerCase("ru") || "unknown")]
.reduce((sum, char) => (sum + (char.codePointAt(0) ?? 0)) % 5, 0);
}