Template Helper Module
- Aaron Roworth
Installation & Commands
Installation:
npm i --save @blinkmobile/forms-template-helper
Functions
The template helper exposes the following functions via an object. The majority of function are wrapped by the functions provided by "service", but are exposed for convenience.
service
Object containing two functions that wrap most the below functions.
- load (templatePath) => Promise(<Array<MustacheRenderers>)
- Loads all templates in a given path. Sub folders are treated as 'types', eg a folder structure of
- load (templatePath) => Promise(<Array<MustacheRenderers>)
|-templates
| |-html
| | |-text.mustache
| |-js
| | |-controller.js.mustache
results in two types of templates, "html" and "js"
- getByType (type) => Array<object>
- returns an object where the key is the name of the file (minus the .mustache part) and the value is a Mustache Renderer, "primed" with the template
- getByType (type) => Array<object>
fileListHelper
Object containing helper functions for getting lists of files.
- getFileList(path <string>) => Promise(Array<string>)
- Gets a list of files from the specified path
- getFolderList(path <string>) => Promise(Array<string>)
- Gets a list of folders from the specified path
- getFileList(path <string>) => Promise(Array<string>)
readFileContents
readFileContents(path-to-file <string>) => Promise(contents <string>)
Asynchronously reads the contents of a file and resolves with the contents of the file.
mustacheRenderer
Object containing helper functions to prime a mustache template with the contents of a mustache file
- renderer (template<string>) => (data<object>) => <string>
- Returns a function that accepts an object of data, lazily runs mustache on the initial template with the data
- createRenderer (filePath<string>) => (data<object>) => <string>
- Takes a path to a mustache file and reads the file, passing the template to the aboveÂ
renderer
 function, returning the result
- Takes a path to a mustache file and reads the file, passing the template to the aboveÂ
- renderer (template<string>) => (data<object>) => <string>
writeFile
writeFile(filePath<string>, contents<string>) => Promise(filePath<string>)
Writes contents
 to path
. Will recursively create the path if it doesn't exist
lazyWriteFile
lazyWriteFile (filePath<string>, contents<string>) => (basePath = '') => writeFile
Same as writeFile but returns a function that will write the file to basePath
 when run
writeTemplates
writeTemplates (srcFolder<string>, destFolder<string>)
Used by the forms transformer during initialisation to copy the templates into the forms project folder. srcFolder
 is where in your plugin project the template files are, destFolder
 is where they will be copied to. Note that all contents of destFolder
 are removed.
Template priming
If you use the template helper module we take advantage of the mustache Mustache.parse function to "prime" a Mustache renderer with the template string. When using the template helper module, service.getByType('my-type')
(see above) returns an object with the template file name as the key (minus the .mustache part), and the value is a "Mustache renderer" - a function that takes an object and returns the compiled template string.
What about other template systems?
Whilst the template helper service uses mustache, you are not forced to use the template helper. This means that you are free to use whatever template system you wish in your plug-in.