remark-variables
This plugin adds variables support to remark using a customizable template syntax. Variables are checked against both the vfile's, and processor's data property and can use both dot and bracket syntax. For example, foo.bar[0]
resolve to vfile.data.foo.bar[0]
if it exists, or do nothing if the property does not exist. By default, this plugin uses double curly braces {{
, }}
to denote variables but can be configured.
Install
npm install --save remark-variables
Usage
If we have a file, example.md
# {{ title }}
- {{ list[0] }} (string)
- {{ list[1] }} (number)
- {{ list[2] }} (boolean)
> {{ subtitle }}
and
var unified = require('unified')
var parser = require('remark-parse')
var compiler = require('remark-stringify')
var variables = require('remark-variables')
var reporter = require('vfile-reporter')
var toVfile = require('to-vfile')
var markdown = toVfile('./example.md')
// Set the processor
var processor = unified()
.use(parser)
.use(compiler)
.use(variables)
// Add some data
processor = processor()
.data('title', 'Example')
.data('subtitle', 'Variables in markdown!')
.data('list', [ 'other text', 0, true ])
// And process
processor().process(markdown, function (err, file) {
console.error(reporter(err || file))
console.log(file.toString())
})
the output would be
./example.md: no issues found
# Example
- other text (string)
- 0 (number)
- true (boolean)
> Variables in markdown!
Options
Type: Object
| Array
| String
If options is a string, then it is used as the opening and closing fence markers, for example: .use(variables, ':')
would match :some.variable[0]:
look for vfile.data.some.variable[0]
. If options is an array, options[0] and options[1] are used as fence markers.
fence
Type: Array
Default: [ '{{', '}}' ]
Markers used to denote a variable to be replaced.
License
MIT © Paul Zimmer