Files
rf4-spotter/apps/web/src/lib/tackle-visuals.ts
T
2026-09-12 15:30:40 +07:00

21 lines
1.0 KiB
TypeScript

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);
}