mdast utility to transform to nlcst.
Note: You probably want to use
remark-retext.
This package is ESM only: Node 12+ is needed to use it and it must be imported instead of required.
npm:
npm install mdast-util-to-nlcstimport {VFile} from 'vfile' import {ParseEnglish} from 'parse-english' import {inspect} from 'unist-util-inspect' import fromMarkdown from 'mdast-util-from-markdown' import {toNlcst} from 'mdast-util-to-nlcst' var file = new VFile('Some *foo*sball.') var mdast = fromMarkdown(file) var nlcst = toNlcst(mdast, file, ParseEnglish) console.log(inspect(nlcst))Yields:
RootNode[1] (1:1-1:17, 0-16) └─0 ParagraphNode[1] (1:1-1:17, 0-16) └─0 SentenceNode[4] (1:1-1:17, 0-16) ├─0 WordNode[1] (1:1-1:5, 0-4) │ └─0 TextNode "Some" (1:1-1:5, 0-4) ├─1 WhiteSpaceNode " " (1:5-1:6, 4-5) ├─2 WordNode[2] (1:7-1:16, 6-15) │ ├─0 TextNode "foo" (1:7-1:10, 6-9) │ └─1 TextNode "sball" (1:11-1:16, 10-15) └─3 PunctuationNode "." (1:16-1:17, 15-16)This package exports the following identifiers: toNlcst. There is no default export.
Transform a tree in mdast, with a corresponding virtual file, into nlcst.
Tree in mdast with positional information (MdastNode).
Virtual file (VFile).
nlcst parser (Function). For example, parse-english, parse-dutch, or parse-latin.
List of types to ignore (Array.<string>).
'table', 'tableRow', and 'tableCell' are always ignored.
List of types to mark as source (Array.<string>).
'inlineCode' is always marked as source.
Say we have the following file example.md:
A paragraph. > A paragraph in a block quote.…and if we now transform with ignore: ['blockquote'], we get:
RootNode[2] (1:1-3:1, 0-14) ├─0 ParagraphNode[1] (1:1-1:13, 0-12) │ └─0 SentenceNode[4] (1:1-1:13, 0-12) │ ├─0 WordNode[1] (1:1-1:2, 0-1) │ │ └─0 TextNode "A" (1:1-1:2, 0-1) │ ├─1 WhiteSpaceNode " " (1:2-1:3, 1-2) │ ├─2 WordNode[1] (1:3-1:12, 2-11) │ │ └─0 TextNode "paragraph" (1:3-1:12, 2-11) │ └─3 PunctuationNode "." (1:12-1:13, 11-12) └─1 WhiteSpaceNode "\n\n" (1:13-3:1, 12-14)Say we have the following file example.md:
A paragraph. > A paragraph in a block quote.…and if we now transform with source: ['blockquote'], we get:
RootNode[3] (1:1-3:32, 0-45) ├─0 ParagraphNode[1] (1:1-1:13, 0-12) │ └─0 SentenceNode[4] (1:1-1:13, 0-12) │ ├─0 WordNode[1] (1:1-1:2, 0-1) │ │ └─0 TextNode "A" (1:1-1:2, 0-1) │ ├─1 WhiteSpaceNode " " (1:2-1:3, 1-2) │ ├─2 WordNode[1] (1:3-1:12, 2-11) │ │ └─0 TextNode "paragraph" (1:3-1:12, 2-11) │ └─3 PunctuationNode "." (1:12-1:13, 11-12) ├─1 WhiteSpaceNode "\n\n" (1:13-3:1, 12-14) └─2 ParagraphNode[1] (3:1-3:32, 14-45) └─0 SentenceNode[1] (3:1-3:32, 14-45) └─0 SourceNode "> A paragraph in a block quote." (3:1-3:32, 14-45)Use of mdast-util-to-nlcst does not involve hast so there are no openings for cross-site scripting (XSS) attacks.
remark-retext— retext support for remarkhast-util-to-nlcst— Transform hast to nlcsthast-util-to-mdast— Transform hast to mdasthast-util-to-xast— Transform hast to xastmdast-util-to-hast— Transform mdast to hast
See contributing.md in syntax-tree/.github for ways to get started. See support.md for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.