core/selectors/document.selector.ts
core/selectors/document.selector.ts is a file in GovLab Context. 19 lines of code and 7 definitions.
import type { DocumentSource, PagText } from "#types/grammar.document.types";
import { FENCE, FIRST_LINE, LINE_BREAK, PAG_FENCE_INFO } from "#configuration/constants/document.constants";
import { splitLines } from "#core/converters/text.converter";
const isPagFenceOpen = function isPagFenceOpen(trimmed: string): boolean {
return trimmed.startsWith(FENCE) && trimmed.includes(PAG_FENCE_INFO);
};
export const pagBlockOf = function pagBlockOf(text: string): PagText | null {
const lines = splitLines(text);
const open = lines.findIndex((line) => isPagFenceOpen(line.trim()));
if (open === -1) {
return null;
}
const close = lines.findIndex((line, index) => index > open && line.trim().startsWith(FENCE));
const body = lines.slice(open + 1, close === -1 ? lines.length : close);
return { firstLine: open + 2, text: body.join(LINE_BREAK) };
};
export const pagTextOf = function pagTextOf(source: DocumentSource, text: string): PagText | null {
return source.kind === "template" ? pagBlockOf(text) : { firstLine: FIRST_LINE, text };
};