1.0.6 • Published 7 years ago
typo v1.0.6
typo
typo
is an extendable template engine designed for the future:
- featured with
Promise
andasync/await
. - powerful custom sync/async directives(helpers).
Install
$ npm install typo --save
Usage
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 bar
Asychronous 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 Jobs
Compile 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 moon
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 totrue
- concurrency
Number=Number.POSITIVE_INFINITY
If compiled as an asynchronous function, the number of max concurrently pending directive functions. - value_not_defined
enum.<print|ignore|throw>=print
Suppose 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_defined
Tellstypo
what 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
1.0.6
7 years ago
1.0.5
7 years ago
1.0.4
7 years ago
1.0.3
7 years ago
1.0.2
7 years ago
1.0.1
7 years ago
1.0.0
7 years ago
0.2.11
10 years ago
0.1.14
11 years ago
0.1.13
11 years ago
0.1.12
11 years ago
0.1.11
11 years ago
0.1.10
11 years ago
0.1.9
11 years ago
0.1.8
11 years ago
0.1.7
11 years ago
0.1.1
11 years ago
0.1.0
11 years ago