import { Rule } from "./rule.ts"; import { PairElts, StructOfArr } from "./types.ts"; import { Extractor } from "./extractor.ts" export function extr(...args: A): Extractor, string>> { const seps = [] as string[]; const vars = [] as string[]; let pair = true; for (const arg of args) { if (pair) seps.push(arg); else vars.push(arg); pair = !pair; } const vars_ = vars as PairElts; const rule = new Rule(seps, vars_); return new Extractor(text => rule.get(text)) } Deno.test("types", async () => { const { assertEquals } = await import("https://deno.land/std@0.224.0/assert/assert_equals.ts"); const vars = extr() .or(extr("bonjour, ", 'animal', ", poilu")) .or(extr("bonjour, ", 'arbre', ", feuillu")) .get("bonjour, le chĂȘne, feuillu"); assertEquals({ vars }, { vars: { "arbre": "le chĂȘne" } }) })