@accordproject/markdown-common
v1.0.1
Published
A framework for transforming markdown
Downloads
14,944
Readme
CommonMark Transformer
Converts markdown text to/from a CommonMark DOM.
The CommonMark DOM is a Concerto model — see [email protected].
Installation
npm install @accordproject/markdown-commonPeer dependency: @accordproject/concerto-core@^4.1.3.
Usage
import { CommonMarkTransformer } from '@accordproject/markdown-common';
const transformer = new CommonMarkTransformer();
const dom = transformer.fromMarkdown('# Heading\n\nThis is some `code`.\n\nFin.');
console.log(JSON.stringify(dom, null, 4));CommonJS works too:
const { CommonMarkTransformer } = require('@accordproject/markdown-common');The output is:
{
"$class": "[email protected]",
"xmlns": "http://commonmark.org/xml/1.0",
"nodes": [
{
"$class": "[email protected]",
"level": "1",
"nodes": [
{
"$class": "[email protected]",
"text": "Heading"
}
]
},
{
"$class": "[email protected]",
"nodes": [
{
"$class": "[email protected]",
"text": "This is some "
},
{
"$class": "[email protected]",
"text": "code"
},
{
"$class": "[email protected]",
"text": "."
}
]
},
{
"$class": "[email protected]",
"nodes": [
{
"$class": "[email protected]",
"text": "Fin."
}
]
}
]
}You can manipulate the DOM and convert it back to markdown:
dom.nodes[0].nodes[0].text = 'My New Heading';
const newMarkdown = transformer.toMarkdown(dom);
console.log(newMarkdown);The new markdown string will be:
My New Heading
====
This is some `code`.
Fin.Note how the H1 heading has been normalized during conversion from
#syntax to====syntax. In CommonMark these are equivalent.
What this package exports
CommonMarkTransformer— markdown ↔ CommonMark DOMToMarkdownVisitor,FromCommonMarkVisitor,FromMarkdownIt— lower-level building blocksCommonMarkUtils— helpers for rendering markdown (escaping, list prefixes, etc.)Stack— generic stack used by the visitorsCommonMarkModel,CiceroMarkModel,ConcertoMetaModel,TemplateMarkModel— Concerto namespace/MODEL strings consumed by the other packages in this monorepo
License
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/.
