import { ANCHOR_MARK, ANCHOR_SPACE, LETTERS_AND_DIGITS, REPOSITORY_PAGES, SENTENCE_STOP, SPACE, } from "#configuration/constants/readme.constants"; import { METHODOLOGY_PAGE } from "@banes-lab/web/core/ids/page.ids.ts"; import { WORD_SEPARATOR } from "#configuration/constants/chapter.constants"; export const isRepositoryPage = function isRepositoryPage(page: string): boolean { return REPOSITORY_PAGES.includes(page); }; export const pageFolderOf = function pageFolderOf(page: string, label: string): string { return page === METHODOLOGY_PAGE ? "" : label.toLowerCase().split(SPACE).join(WORD_SEPARATOR); }; export const anchorOf = function anchorOf(title: string): string { let out = ""; for (const char of title.toLowerCase()) { const kept = LETTERS_AND_DIGITS.includes(char) || char === ANCHOR_SPACE; out += kept ? char : (char === SPACE ? ANCHOR_SPACE : ""); } return ANCHOR_MARK + out; }; export const firstSentenceOf = function firstSentenceOf(text: string): string { const stop = text.indexOf(SENTENCE_STOP); return stop === -1 ? text : text.slice(0, stop + SENTENCE_STOP.trimEnd().length); };