typo
v1.0.6
Published
`typo` is an extendable template engine designed for the future
Maintainers
Readme
typo
typo is an extendable template engine designed for the future:
- featured with
Promiseandasync/await. - powerful custom sync/async directives(helpers).
Install
$ npm install typo --saveUsage
const typo = require('typo')()
typo.template('Hello, {{user.name}}!', {
user: {
name: 'Steve'
}
}).then(console.log)
// Hello, Steve!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)
// Then it will print a blue word "blue"Custom directives
Basic:
typo.use('upper', word => word.toUpperCase())
typo.template('{{upper foo}} bar').then(console.log)
// FOO barAsychronous directives
typo.use('fullname', async name => await getFullNameFromServer(name))
typo.template('{{fullname name}}', {name: 'Steve'}).then(console.log)
// Steve Jobs
typo.template('{{fullname Steve}}').then(console.log)
// Steve JobsCompile the template and use it Later
const template = typo.compile(`Once in a {{blue color}} moon`)
template({color: 'blue'})
.then(console.log)
// Once in a blue moontypo({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=truewhether should be compiled into an asynchronous function, defaults totrue - concurrency
Number=Number.POSITIVE_INFINITYIf compiled as an asynchronous function, the number of max concurrently pending directive functions. - value_not_defined
enum.<print|ignore|throw>=printSuppose the value of an expression is not found indata, then it will print the expression directly ifprint(as default), or print nothing ifignore, or throw an error ifthrow. - directive_value_not_defined
enum.<print|ignore|throw>=value_not_definedTellstypowhat to do if the parameter expression of a directive is not found indata. And this option is default to the value ofvalue_not_defined
- async
// default options
typo.compile('{{blue color}}')()
// prints a blue letter, "color"
.then(console.log) => {
// value_not_defined: throw
typo.compile('{{blue color}}', {
value_not_defined: 'throw'
})()
.catch((e) => {
// code frame and
// 'value not found for key "color"''
console.error(e.message)
})
typo.compile('{{adjective}} {{blue color}}', {
value_not_defined: 'throw',
directive_value_not_defined: 'print'
})({
adjective: 'beautiful'
})
// prints "beautiful color", and the letter color is blue
.then(console.log)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
{{<directive>[:<directive-params>][|<directive¶ms>] <expression>}}
{{<expression>}}License
MIT
