21 lines
1.0 KiB
TypeScript
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);
|
|
}
|