typo
typo
is an extendable template engine designed for the future:
- featured with
Promise
and async/await
. - powerful custom sync/async helpers.
Install
$ npm install typo --save
Usage
const typo = require('typo')()
typo.template('Hello, {{user.name}}!', {
user: {
name: 'Steve'
}
}).then(console.log)
typo
with chalk
const typo = require('typo')()
const chalk = require('typo-chalk')
typo.use(chalk)
typo.template('Once in a {{blue blue}} moon').then(console.log)
Custom helpers
Basic:
typo.use('upper', word => word.toUpperCase())
typo.template('{{upper foo}} bar').then(console.log)
Asychronous helpers
typo.use('fullname', async name => await getFullNameFromServer(name))
typo.template('{{fullname name}}', {name: 'Steve'}).then(console.log)
typo.template('{{fullname Steve}}').then(console.log)
Compile the template and use it Later
const template = typo.compile(`Once in a {{blue color}} moon`)
template({color: 'blue'})
.then(console.log)
typo({open, close})
Creates the typo
instance.
- open
String={{
The beginning of each directive. - close
String=}}
The end of each directive.
compile(template, compile_options)
Compiles a template into a function.
- template
String
- compile_options
Object
- async
Boolean=true
whether should be compiled into an asynchronous function, defaults to true
- concurrency
Number=Number.POSITIVE_INFINITY
If compiled as an asynchronous function, the number of max concurrently pending helper functions. - value_not_defined
enum.<print|ignore|throw>=print
Suppose the value of an expression is not found in data
, then it will print the expression directly if print
(as default), or print nothing if ignore
, or throw an error if throw
.
Returns function(data)
async: false
const result = typo.compile(template)(data)
console.log(result)
async: true (default)
typo.compile(template)(data).then(console.log)
template(template, data, compile_options)
- template
String
- data
Object=
- compile_options
Object=
Returns Promise
if compile_options.async
is true
(default), or String
the substituted result if is not.
Syntax
{{<helper-name>[:<helper-params>][|<helper-name¶ms>] <expression>}}
{{<expression>}}
License
MIT