core/formatters/template.formatter.ts

core/formatters/template.formatter.ts is a file in GovLab Docs. 24 lines of code and 6 definitions.

import { DEFAULT_BODY, MODULE_BODY } from "#configuration/strings/template.strings";
import { FRONTMATTER_FENCE } from "#configuration/constants/document.constants";
import type { TemplateSpec } from "#types/document.types";
import { titleCase } from "#core/formatters/markdown.formatter";

const LINE_BREAK = "\n";
const MODULE_AXIS = "module";

const field = function field(key: string, value: string): string {
    return `${key}: ${value}`;
};

export const renderTemplate = function renderTemplate(spec: TemplateSpec): string {
    const isModule = spec.def.ownerAxis === MODULE_AXIS;
    const frontmatter = [
        FRONTMATTER_FENCE,
        field("type", spec.form),
        field("name", spec.name),
        field("summary", spec.summary),
        ...(isModule ? [] : [field("concern", spec.concern)]),
        field("status", spec.status),
        FRONTMATTER_FENCE,
    ];
    return [...frontmatter, "", `# ${titleCase(spec.name)}`, "", isModule ? MODULE_BODY : DEFAULT_BODY, ""].join(
        LINE_BREAK,
    );
};