https://github.com/leuisken/md2json2html
A npm package that transform markdown data to json and html.
https://github.com/leuisken/md2json2html
html json markdown transform
Last synced: about 1 year ago
JSON representation
A npm package that transform markdown data to json and html.
- Host: GitHub
- URL: https://github.com/leuisken/md2json2html
- Owner: LeuisKen
- License: mit
- Created: 2017-10-23T10:24:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-18T04:11:47.000Z (over 8 years ago)
- Last Synced: 2025-02-21T20:43:41.448Z (over 1 year ago)
- Topics: html, json, markdown, transform
- Language: JavaScript
- Size: 24.4 KB
- Stars: 10
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# md2json2html
[](https://www.npmjs.org/package/md2json2html)
[](https://npmjs.org/package/md2json2html)
A npm package that transform markdown data to json and html.
## Usage:
### Install:
```sh
npm i md2json2html
```
### Example:
See the [test](./test/index.test.js) file.
```js
const fs = require('fs');
const main = require('md2json2html');
const markdown2json = main.markdown2json;
const json2html = main.json2html;
const data = fs.readFileSync(__dirname + '/test.md', 'utf8');
const jsonRes = markdown2json(data);
const htmlRes = json2html(jsonRes.content);
console.log(JSON.stringify(jsonRes, null, 4));
console.log(htmlRes);
```
## API:
### markdown2json
```js
/**
* markdown to json
*
* @param {string} markdownData markdown data string
* @return {Object} json object that contents yaml format meta and markdown-json node
*/
```
Note: the markdown-json node is defined as following:
```js
class Node {
constructor(tagName, attr, children) {
this.tagName = tagName;
this.attr = attr;
this.children = children;
}
}
// example:
// Node {
// tagName: 'ul',
// attr: {
// // key-value pairs for ul
// },
// children: Node or Array of Node
// }
```
See also [test.json](./test/test.json).
### json2html
```js
/**
* json to html
*
* @param {Object} node markdown-json node
* @param {Array} converters markdown-json node tramsform functions
* @return {string} html format string
*/
```
`converters` is an array of function, the function's arguments as follows:
```js
/**
* sample converter
*
* @param {Object} node markdown-json node
* @return {Object} transformed markdown-json node, this will pass to next converter
*/
function sampleConverter(node) {
// do something here.
}
```
You can find a sample converter in [test](./test/index.test.js) file. The converter using prismjs highlight the code area of node.
Thanks to [mark-twain](https://github.com/benjycui/mark-twain).