UNPKG

mxdocgen

Version:

A small tool that mimics the documentation generation capabilities offered in Mendix Studio Pro, but with greater flexibility. It uses the Mendix Model SDK to extract information from a Mendix model, which is then fed into a set of templates to generate

39 lines (31 loc) 1.24 kB
import path from "path"; import * as fs from "fs"; import pkgDir from "pkg-dir"; import Mustache from "mustache"; export interface TemplateConfig { directory: string; extension: string; mainTemplate: string; } export interface TemplateData { [property: string]: string | number | boolean | undefined | TemplateData | Array<TemplateData>; } export const defaultTemplateConfig: TemplateConfig = { directory: path.join(pkgDir.sync(__dirname)!, "templates"), extension: ".html", mainTemplate: "Main" }; export const render = (config: TemplateConfig, templateData: TemplateData): string => { const templates = loadTemplates(config.directory, config.extension, config.mainTemplate); return Mustache.render(templates.main, templateData, templates.partials); }; const loadTemplates = (directory: string, extension: string, main: string) => ({ main: loadTemplate(directory, extension, main), partials: (partialName: string) => loadTemplate(directory, extension, partialName) }); const loadTemplate = (directory: string, extension: string, name: string): string => { const cleanExtension = extension.match(/^[.\\/]*(.*)$/)![1]; return fs.readFileSync(path.join(directory, `${name}.${cleanExtension}`), { encoding: "utf8" }); };