mdast-comment-marker
!Buildbuild-badgebuild
!Coveragecoverage-badgecoverage
!Downloadsdownloads-badgedownloads
!Sizesize-badgesize
!Sponsorssponsors-badgecollective
!Backersbackers-badgecollective
!Chatchat-badgechatmdast utility to parse comment markers.
Contents
* [`commentMarker(value)`](#commentmarkervalue)
* [`Marker`](#marker)
* [`MarkerParameters`](#markerparameters)
* [`MarkerParameterValue`](#markerparametervalue)
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 inremark-lint
remark-lint to control
whether lint rules are turned on or ignored, and by mdast-zone
mdast-zone
to replace sections between two markers.Install
This package is ESM onlyesm. In Node.js (version 16+), install with npm:npm install mdast-comment-marker
In Deno with
esm.sh
esmsh:import {commentMarker} from 'https://esm.sh/mdast-comment-marker@3'
In browsers with
esm.sh
esmsh:<script type="module">
import {commentMarker} from 'https://esm.sh/mdast-comment-marker@3?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'-->`
}
}
{
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 identifiercommentMarker
api-comment-marker.
There is no default export.commentMarker(value)
Parse a comment marker.Parameters
value
(unknown
)
— thing to parse, typically [`Node`][node]
Returns
Info (Marker
api-marker) when applicable or undefined
.Marker
Comment marker (TypeScript type).Properties
name
(string
)
— name of marker
attributes
(string
)
— value after name
parameters
(MarkerParameters
api-marker-parameters)
— parsed attributes
— reference to given node
MarkerParameters
Parameters (TypeScript type).type
type MarkerParameters = Record<string, MarkerParameterValue>
MarkerParameterValue
Value (TypeScript type).If it looks like a number (to JavaScript), it’s cast as number. The strings
true
and false
are turned into their corresponding
booleans.
The empty string is also considered the true
boolean.type
type MarkerParameterValue = number | string | boolean
Types
This package is fully typed with TypeScript. This package exports the typesMarker
api-marker,
MarkerParameters
api-marker-parameters, and
MarkerParameterValue
api-marker-parameter-valueCompatibility
Projects maintained by the unified collective are compatible with maintained versions of Node.js.When we cut a new major release, we drop support for unmaintained versions of Node. This means we try to keep the current release line,
mdast-comment-marker@^3
,
compatible with Node.js 16.Security
Use ofmdast-comment-marker
does not involve hast, user content, or change
the tree, so there are no openings for cross-site scripting (XSS)xss
attacks.Related
— change or replace a section marked by comments
Contribute
Seecontributing.md
contributing in syntax-tree/.github
health for
ways to get started.
See support.md
support for ways to get help.This project has a code of conductcoc. By interacting with this repository, organization, or community you agree to abide by its terms.