Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kaelzhang/node-typo
typo is an extendable template engine designed for the future
https://github.com/kaelzhang/node-typo
javascript nodejs template-engine
Last synced: 17 days ago
JSON representation
typo is an extendable template engine designed for the future
- Host: GitHub
- URL: https://github.com/kaelzhang/node-typo
- Owner: kaelzhang
- License: other
- Created: 2013-06-16T08:59:21.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2017-03-19T04:54:18.000Z (over 7 years ago)
- Last Synced: 2024-04-15T12:33:04.655Z (7 months ago)
- Topics: javascript, nodejs, template-engine
- Language: JavaScript
- Homepage:
- Size: 83 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/kaelzhang/node-typo.svg?branch=master)](https://travis-ci.org/kaelzhang/node-typo)
# typo
`typo` is an extendable template engine designed for the future:
- featured with `Promise` and `async/await`.
- powerful custom sync/async directives(helpers).## Install
```sh
$ npm install typo --save
```## Usage
```js
const typo = require('typo')()
typo.template('Hello, {{user.name}}!', {
user: {
name: 'Steve'
}
}).then(console.log)
// Hello, Steve!
```### `typo` with chalk
```js
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:
```js
typo.use('upper', word => word.toUpperCase())
typo.template('{{upper foo}} bar').then(console.log)
// FOO bar
```### Asychronous directives
```js
typo.use('fullname', async name => await getFullNameFromServer(name))
typo.template('{{fullname name}}', {name: 'Steve'}).then(console.log)
// Steve Jobstypo.template('{{fullname Steve}}').then(console.log)
// Steve Jobs
```### Compile the template and use it Later
```js
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 to `true`
- concurrency `Number=Number.POSITIVE_INFINITY` If compiled as an asynchronous function, the number of max concurrently pending directive functions.
- value_not_defined `enum.=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`.
- directive_value_not_defined `enum.=value_not_defined` Tells `typo` what to do if the parameter expression of a directive is not found in `data`. And this option is default to the value of `value_not_defined````js
// 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
```js
const result = typo.compile(template)(data)
console.log(result)
```async: true (default)
```js
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
```mustache
{{[:][|] }}
{{}}
```## License
MIT