mdast-comment-marker
mdast utility to parse comment markers.
Contents
What is this?
This package is a utility that tries to parse a structured marker from a comment.
When should I use this?
Comments are a hidden part of markdown, so they can be used as processing instructions. For example, this utility is used in remark-lint
to control whether lint rules are turned on or ignored, and by mdast-zone
to replace sections between two markers.
Install
This package is ESM only. In Node.js (version 12.20+, 14.14+, or 16.0+), install with npm:
npm install mdast-comment-marker
In Deno with esm.sh
:
import {commentMarker} from 'https://esm.sh/mdast-comment-marker@2'
In browsers with esm.sh
:
<script type="module">
import {commentMarker} from 'https://esm.sh/mdast-comment-marker@2?bundle'
</script>
Use
import {commentMarker} from 'mdast-comment-marker'
console.log(commentMarker({type: 'html', value: '<!--foo-->'}));
console.log(commentMarker({
type: 'html',
value: '<!--foo bar baz=12.4 qux="test test" quux=\'false\'-->'
}));
console.log(commentMarker({type: 'html', value: '<!doctype html>'}));
// Also supports MDX expressions:
console.log(commentMarker({
type: 'mdxFlowExpression',
value: '/* lint disable heading-style */'
}));
Yields:
{
name: 'foo',
attributes: '',
parameters: {},
node: { type: 'html', value: '<!--foo-->' }
}
{
name: 'foo',
attributes: `bar baz=12.4 qux="test test" quux='false'`,
parameters: { bar: true, baz: 12.4, qux: 'test test', quux: false },
node: {
type: 'html',
value: `<!--foo bar baz=12.4 qux="test test" quux='false'-->`
}
}
null
{
name: 'lint',
attributes: 'disable heading-style',
parameters: { disable: true, 'heading-style': true },
node: {
type: 'mdxFlowExpression',
value: '/* lint disable heading-style */'
}
}
API
This package exports the identifier commentMarker
. There is no default export.
commentMarker(node)
Parse a comment marker from node
(Node
).
Returns
Info, when applicable (Marker?
).
Marker
Comment marker.
Properties
name
(string
) — name of markerattributes
(string
) — value after nameparameters
(Object
) — parsed attributes, with decimal numbers,true
, andfalse
are casted to numbers and booleansnode
(Node
) — reference to given node
Types
This package is fully typed with TypeScript. This package exports the types Marker
, MarkerParameterValue
, and MarkerParameters
.
Compatibility
Projects maintained by the unified collective are compatible with all maintained versions of Node.js. As of now, that is Node.js 12.20+, 14.14+, and 16.0+. Our projects sometimes work with older versions, but this is not guaranteed.
Security
Use of mdast-comment-marker
does not involve hast, user content, or change the tree, so there are no openings for cross-site scripting (XSS) attacks.
Related
mdast-zone
— change or replace a section marked by comments
Contribute
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.