1.0.7 • Published 7 years ago
remark-macro v1.0.7
Remark Macro
Add macros to remark parser
This library gives you an opportunity to define macros, which can be used inside the markdown as follows.
# Hello
Writing some markdown
[alert]
This is an alert message
[/alert]
The alert
block is knows as a macro. By default the library will not parse this block. However, you can define a macro and then it will be parsed and all the contents will be forwarded to you.
const macro = require('remark-macro')()
macro.addMacro('alert', function (content, props) {
assert.equal(content, 'This is an alert message')
assert.deepEqual(props, {})
})
Installation
npm i --save remark-macro
Usage
const remark = require('remark')
const macro = require('remark-macro')()
const html = require('remark-html')
macro.addMacro('alert', function (content, props, { transformer, eat }) {
return {
type: 'AlertNode',
data: {
hName: 'div',
hClassNames: ['alert alert-note'],
hChildren: transformer.tokenizeBlock(content, eat.now())
}
}
})
const markdown = `
# Hello world
[alert]
This is an alert
[/alert]
`
remark()
.use(macro.transformer)
.use(html)
.process(markdown, function (error, result) {
console.log(result.toString())
})
/**
<h1> Hello world </h1>
<div class="alert alert-note"><p> This is an alert </p></div>
*/