This uses doT.js to walk through directories and parse all directory names, filenames, and file contents for doT templates with supplied data. See the doT.js documentation for more.
npm i -s dotall
const dotAll = require('dotAll');
dotAll.renderDir('template_directory', {
app: {
name: "FlamingoApp"
}
});
The method renderDir
walks through a directory and renders all files, directories, and filenames using doT. It takes two arguments:
argument name | data type | example |
---|---|---|
templateDirPath | String | "path/to/templates" |
data | Object | { app: { name: "FlamingoApp" } } |
The method render
takes a string and renders it using doT.
It takes two arguments:
argument name | data type | example |
---|---|---|
templateString | String | "Welcome to the {{_self.app.name}}!" |
data | Object | { app: { name: "FlamingoApp" } } |
Template tags are formed using two consecutive curly brackets and an underscore, and rely on self
for data:
<h1>{{_self.app.name}}</h1>
Here's a list of automagically available properties of self
:
FILENAME Name of the currently processed file, e.g. main.js FILEPATH Path of the currently processed file, e.g. C:\
You can loop through arrays and objects using two curly brackets followed by an asterisk:
<ul id="todo-list">
{{*todos :todo:index}}
<li>{{_index}}.) {{_action}}</li>
{{*}}
</ul>
...combined with the following data:
const = {
todos: ['Cleanup', 'Refactor', 'Package']
};
...yields this rendered template:
<ul id="todo-list">
<li>1.) Cleanup</li>
<li>2.) Refactor</li>
<li>3.) Package</li>
</ul>
If the data path specified in a template couldn't be found, dotAll looks for a key called default
in the data you passed and renders it instead. If no default
key is provided, dotAll leaves these template tags untouched.