feat: add semantic tackle glyphs
This commit is contained in:
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user