get the config and toc object from the markdown string.
npm install front-matter-markdown




Get the config object from a markdown string. It will extract configuration from front-matter.
And get the directory(contents) from the list of heading TOC/Table Of Content/Summary.
It will generate a TOC from the markdown string if the list is empty
``coffee
parseMarkdown = require('front-matter-markdown')
markdownStr = """
---
title: this is a title
---
* Directory
* Directory2
* Directory3
"""
console.log(JSON.stringify parseMarkdown(markdownStr), null, 1)
`
the results:
`bash`
{
"title": "this is a title",
"skipSize": 31,
"ordered": false,
"contents": [
{
"title": "Directory",
"path": "./dir1",
"ordered": false,
"contents": [
{
"title": "Directory2",
"path": "/dir2"
}
]
},
{
"title": "Directory3",
"path": "#inline"
}
]
}
`js`
var parseMarkdown = require('front-matter-markdown');
* parseMarkdown(aMarkdownString, aOptions): parse a markdown string to a plain object.aOptions
(Object)*:content
(Boolean)*: whether extract the markdown content from configuration.$compiled
defaults to true. it will store the compiled markdown to too.content
* Note: the and $compiled attributes are non-enumerable.toc
(Boolean)*: whether extract the directory from the list in the specified heading.contents
defaults to false. the 'directoy' is put into attributes.links
(Boolean)*: merge the markdown links label to the result, default to false.heading
(String|RegExp|ArrayOf(String))*: the toc list in the heading(s) to extract the directory.headingsAsToc
defaults to ['TOC', 'Table Of Content', 'Summary']
(Boolean|Object)*: whether generate the directory from the headings of markdown.generate
defaults to false. It will the toc if no toc list in the specified heading(toc enabled).maxDepth
(Number)*: Use headings whose depth is at most max depth for generate.firstLevel
defaluts to 3.
(Number)*: the first level to generate the directory from the headings of markdown.Returns
defaluts to 1.
* :skipSize
Number*: the front-matter configuration size if existscontent
String*: the markdown string after removing the front-matter configuration. (available on content is true)$compiled
Object*: the compiled markdown tree.(available on content is true)contents
Object*: the directory from the list in the specified heading. (available on toc)
+ markdown inline options to control parser.
* toc
* heading: the toc list in the heading section.
* headingsAsToc
+ setOptionAlias function
* broken: toc, headingsAsToc options are defaults to false now.
+ add the links option: merge the markdown links label to the result, default to false.
`coffee
markdownStr = """
---
title: this is a title
toc: false
headingsAsToc: false
heading: Category
---
# Category
* Directory
* Directory2
* Directory3
# this is a inline heading {#inline}
[linkLabel1]: hi
[linkLabel2]: url "with title text"
"""
result = parseMarkdown(markdownStr) #= parseMarkdown markdownStr,
# toc:false
# headingsAsToc: false
# heading: 'Category'
``
MIT