core/validators/figure.validator.ts
core/validators/figure.validator.ts is a file in Bane's Lab Build Scripts. 27 lines of code and 8 definitions.
import { emptyFigure } from "#configuration/strings/page.strings";
const FIGURE_SELECTOR = "figure";
const CAPTION_SELECTOR = "figcaption";
const CAPTION_TAG = "FIGCAPTION";
const bodyText = function bodyText(figure: Element): string {
return [...figure.children]
.filter((child) => child.tagName !== CAPTION_TAG)
.map((child) => child.textContent)
.join("")
.trim();
};
const captionText = function captionText(figure: Element): string {
const caption = figure.querySelector(CAPTION_SELECTOR);
const parts =
caption === null ? [] : [...caption.querySelectorAll("*")].filter((part) => part.children.length === 0);
return parts
.map((part) => part.textContent.trim())
.filter((part) => part.length > 0)
.join(" ");
};
export const assertFiguresFilled = function assertFiguresFilled(content: Element, path: string): void {
for (const figure of content.querySelectorAll(FIGURE_SELECTOR)) {
if (bodyText(figure).length === 0) {
throw new Error(emptyFigure(path, captionText(figure)));
}
}
};