@appium/typedoc-plugin-appium
Version:
TypeDoc plugin for Appium & its extensions
64 lines (54 loc) • 1.54 kB
text/typescript
/**
* Handlebars template & partial helpers
* @module
*/
import Handlebars from 'handlebars';
import _ from 'lodash';
import fs from 'node:fs';
import path from 'node:path';
/**
* Path to resources directory, containing all templates and partials.
*/
const RESOURCES_PATH = path.join(__dirname, 'resources');
/**
* Path to templates directory within {@linkcode RESOURCES_PATH}
*/
const TEMPLATE_PATH = path.join(RESOURCES_PATH, 'templates');
/**
* Path to partials directory within {@linkcode RESOURCES_PATH}
*/
const PARTIALS_PATH = path.join(RESOURCES_PATH, 'partials');
/**
* Enum of all available partials
*/
enum AppiumThemePartial {
command = 'command.hbs',
executeMethod = 'execute-method.hbs',
}
/**
* Enum of all available templates
*/
export enum AppiumThemeTemplate {
/**
* Template to render a list of commands
*/
Extension = 'extension.hbs',
}
/**
* Registers all partials found in {@linkcode PARTIALS_PATH} with {@linkcode Handlebars}.
*
* This is executed immediately upon loading this module.
*/
function registerPartials() {
for (const [name, filename] of Object.entries(AppiumThemePartial)) {
Handlebars.registerPartial(name, fs.readFileSync(path.join(PARTIALS_PATH, filename), 'utf8'));
}
}
registerPartials();
/**
* Compiles a {@linkcode AppiumThemeTemplate}.
*/
export const compileTemplate = _.memoize((template: AppiumThemeTemplate) => {
const templatePath = path.join(TEMPLATE_PATH, template);
return Handlebars.compile(fs.readFileSync(templatePath, 'utf8'));
});