1.0.7 • Published 6 years ago

remark-macro v1.0.7

Weekly downloads
1,386
License
MIT
Repository
github
Last release
6 years ago

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>
*/