Files
rf4-spotter/apps/web/src/lib/fish-visuals.ts
T
ik c3e847c249
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s
feat: distinguish fish by visual family
2026-09-12 15:28:24 +07:00

17 lines
1.1 KiB
TypeScript

export type FishVisualFamily = "pike" | "salmonid" | "cyprinid" | "perch" | "catfish" | "eel" | "flatfish" | "marine" | "generic";
const FAMILY_TERMS: Array<[FishVisualFamily, RegExp]> = [
["pike", /щук|судак|pike|pickerel|zander|hecht/i],
["salmonid", /форел|лосос|сёмг|голец|таймен|хариус|trout|salmon|char|grayling|forelle|lachs|saibling/i],
["cyprinid", /карп|карась|лещ|плотв|линь|язь|жерех|голав|усач|амур|толстолоб|carp|bream|roach|tench|barbel|karpfen|brasse/i],
["perch", /окун|ёрш|perch|ruff|barsch/i],
["catfish", /сом|catfish|wels/i],
["eel", /угор|миног|eel|lamprey|aal/i],
["flatfish", /камбал|палтус|скат|flounder|halibut|ray|rochen/i],
["marine", /сельд|треск|скумбр|тунец|акул|сардин|herring|cod|mackerel|tuna|shark|hering|kabeljau/i],
];
export function fishVisualFamily(name: string): FishVisualFamily {
return FAMILY_TERMS.find(([, pattern]) => pattern.test(name))?.[0] ?? "generic";
}