md-json-parser
v1.0.5-rc.2
Published
Markdown To JSON Parsing Library With Components Support.
Downloads
54
Maintainers
Readme
md-json-parser
A markdown parsing library build on the top of unified.
Feature Highlights
- [x] Markdown to JSON Tree Conversion
- [x] Fully Extentible (Using Remark Plugins)
- [x] Frontmatter Support
- [x] TODO: Table of Content (TOC) Support With Options
What is Markdown Parser?
The package is a Fully featured, extentible markdown to JSON Parser, using Syntax Trees. In the input, a markdown string can be given to it with optional plugins and extentions.
Installation
This package is ESM Only. It can be installed via NPM:
npm install md-json-parser
Usage
The Package can be imported like:
Markdown to JSON Parser:
import { MdJsonParserService } from 'md-json-parser'
let markdown = `---
file: abc.txt
creationDate: 2022-02-12
---
# Heading-1
## Heading-2`
// Optionally you can pass the changed configuration via the constructor parameters.
const mdJsonParserService= new MdJsonParserService()
const {data, body} = mdJsonParserService.parseMarkdown(markdown)
{
"data": {
"file": "abc.txt",
"creationDate": "2022-02-12T00:00:00.000Z"
},
"body": {
"type": "root",
"children": [
{
"type": "heading",
"depth": 1,
"children": [
{
"type": "text",
"value": "Heading-1",
"position": {
"start": {
"line": 3,
"column": 3,
"offset": 8
},
"end": {
"line": 3,
"column": 12,
"offset": 17
}
}
}
],
"position": {
"start": {
"line": 3,
"column": 1,
"offset": 6
},
"end": {
"line": 3,
"column": 12,
"offset": 17
}
}
},
{
"type": "heading",
"depth": 2,
"children": [
{
"type": "text",
"value": "Heading-2",
"position": {
"start": {
"line": 4,
"column": 4,
"offset": 22
},
"end": {
"line": 4,
"column": 13,
"offset": 31
}
}
}
],
"position": {
"start": {
"line": 4,
"column": 1,
"offset": 19
},
"end": {
"line": 4,
"column": 13,
"offset": 31
}
}
}
],
"position": {
"start": {
"line": 1,
"column": 1,
"offset": 0
},
"end": {
"line": 4,
"column": 13,
"offset": 31
}
}
}
}
Markdown Options:
{
toc : {
active: true // To Generate TOC or not for the provided markdown.
depth: 2 // From h2 onwards, max tags which are supported.
searchDepth: 3 // Max Depth In which It should search for TOC Items in JSON Tree.
},
remarkPlugins : [
// Array of Remark Plugins For Customization. For More Info Refer: https://github.com/remarkjs/remark/blob/main/doc/plugins.md#create-plugins
]
}
Upcoming/TODO Tasks:
- [ ] Removal of position property from nodes
- [ ] TOC Support
- [ ] Custom Component Types Addition
- [ ] Other general optimization during node parsing