core/validators/coordination.validator.ts
core/validators/coordination.validator.ts is a file in Bane's Lab Content. 39 lines of code and 9 definitions.
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);
};