import { ENTRIES_BANNER, ENTRY_HEADING, INDEX_ROW, INVOKED_PREFIX, SCHEDULE_ROW_FIELD, } from "#configuration/constants/coordination.constants"; export const hostTermsIn = function hostTermsIn(text: string, terms: readonly string[]): string[] { return terms.filter((term) => text.includes(term)); }; const rowLetter = function rowLetter(line: string): string { const [, cell] = line.split("|"); return (cell ?? "").trim(); }; const isSeatLetter = function isSeatLetter(letter: string): boolean { const first = letter.charAt(0); return first >= "A" && first <= "Z" && !letter.startsWith(INVOKED_PREFIX); }; export const boundSeats = function boundSeats(index: string): string[] { return index .split("\n") .filter((line) => line.startsWith(INDEX_ROW)) .map(rowLetter) .filter((letter) => letter !== "letter" && isSeatLetter(letter)); }; export const filedEntries = function filedEntries(accumulator: string): string[] { const at = accumulator.indexOf(ENTRIES_BANNER); if (at === -1) { return []; } return accumulator .slice(at) .split("\n") .filter((line) => line.startsWith(ENTRY_HEADING)) .map((line) => line.slice(ENTRY_HEADING.length).trim()); }; export const schedulesRows = function schedulesRows(agenda: string): boolean { return agenda.includes(SCHEDULE_ROW_FIELD); };