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,
);
};