24 lines
907 B
TypeScript
24 lines
907 B
TypeScript
import getTypeOf from "../getTypeOf";
|
|
|
|
const OBJECT_TYPE = "object";
|
|
const ARRAY_TYPE = "array";
|
|
|
|
/**
|
|
* Renders data into a string by {{variables}}.
|
|
* Given a template string, removes all {{property}} substrings and replaces them with the property in the given data
|
|
*
|
|
* @param template - template string containing variables in handelbars/mustache style
|
|
* @param data - flat object containing properties matching variables
|
|
* @return rendered string
|
|
*/
|
|
export default function render(template: string, data: { [p: string]: any } = {}): string {
|
|
return template.replace(/\{\{\w+\}\}/g, (match) => {
|
|
const key = match.replace(/[{}]/g, "");
|
|
const variable = data[key];
|
|
const variableType = getTypeOf(variable);
|
|
if (variableType === OBJECT_TYPE || variableType === ARRAY_TYPE) {
|
|
return JSON.stringify(variable);
|
|
}
|
|
return variable;
|
|
});
|
|
}
|