README
Run doT (JavaScript template engine) over all files in a directory, including their filenames
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.
Installation:
npm i -s dotall
dotAll
:
Using const dotAll = require('dotAll');
dotAll.renderDir('template_directory', {
app: {
name: "FlamingoApp"
}
});
Methods:
.renderDir(templateDirPath, data)
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" } } |
.render(templateString, data)
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" } } |
Templates
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:\
Loops
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>
Fallback
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.