@accordproject/markdown-common
Version:
A framework for transforming markdown
101 lines (80 loc) • 3.15 kB
Markdown
# CommonMark Transformer
Converts markdown text to/from a DOM.
## Usage
To transform markdown text, first install the `markdown-common` package:
```
npm install @accordproject/markdown-common --save
```
Then in your JavaScript code:
``` javascript
const CommonMarkTransformer = require('@accordproject/markdown-common').CommonMarkTransformer;
const transformer = new CommonMarkTransformer({ tagInfo : true });
const json = transformer.fromMarkdown('# Heading\n\nThis is some `code`.\n\nFin.', 'json');
console.log(JSON.stringify(json, null, 4));
```
The output should be:
``` json
{
"$class": "org.accordproject.commonmark.Document",
"xmlns": "http://commonmark.org/xml/1.0",
"nodes": [
{
"$class": "org.accordproject.commonmark.Heading",
"level": "1",
"nodes": [
{
"$class": "org.accordproject.commonmark.Text",
"text": "Heading"
}
]
},
{
"$class": "org.accordproject.commonmark.Paragraph",
"nodes": [
{
"$class": "org.accordproject.commonmark.Text",
"text": "This is some "
},
{
"$class": "org.accordproject.commonmark.Code",
"text": "code"
},
{
"$class": "org.accordproject.commonmark.Text",
"text": "."
}
]
},
{
"$class": "org.accordproject.commonmark.Paragraph",
"nodes": [
{
"$class": "org.accordproject.commonmark.Text",
"text": "Fin."
}
]
}
]
}
```
Please refer to the [schema](https://models.accordproject.org/commonmark/markdown.html) for the details of all the the nodes that you should expect in the DOM.
You can then manipulate the DOM object, making any required changes:
``` javascript
json.nodes[0].nodes[0].text = 'My New Heading';
```
Finally converting the DOM back into a markdown string:
``` javascript
const newMarkdown = commonMark.toMarkdown(json);
console.log(newMarkdown);
```
The new markdown string will be:
``` markdown
My New Heading
====
This is some `code`.
Fin.
```
> Note how the original H1 heading has been normalized during conversion from `#` syntax to `====` syntax. In commonmark these are equivalent.
## License <a name="license"></a>
Accord Project source code files are made available under the Apache License, Version 2.0 (Apache-2.0), located in the LICENSE file. Accord Project documentation files are made available under the Creative Commons Attribution 4.0 International License (CC-BY-4.0), available at http://creativecommons.org/licenses/by/4.0/.
© 2017-2019 Clause, Inc.