Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Installation & Commands

Installation:

Code Block
languagejs
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
|-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

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

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

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.

Next Step

Developing Custom Plugins