mdast-comment-marker

mdast utility to parse a comment marker

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
mdast-comment-marker
3.0.0a year ago8 years agoMinified + gzip package size for mdast-comment-marker in KB

Readme

mdast-comment-marker
!Buildbuild-badgebuild !Coveragecoverage-badgecoverage !Downloadsdownloads-badgedownloads !Sizesize-badgesize !Sponsorssponsors-badgecollective !Backersbackers-badgecollective !Chatchat-badgechat
mdast 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 in remark-lintremark-lint to control whether lint rules are turned on or ignored, and by mdast-zonemdast-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.shesmsh:
import {commentMarker} from 'https://esm.sh/mdast-comment-marker@3'

In browsers with esm.shesmsh:
<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 identifier commentMarkerapi-comment-marker. There is no default export.

commentMarker(value)

Parse a comment marker.
Parameters
  • value (unknown)
— thing to parse, typically [`Node`][node]
Returns
Info (Markerapi-marker) when applicable or undefined.

Marker

Comment marker (TypeScript type).
Properties
  • name (string)
— name of marker
  • attributes (string)
— value after name
— 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 types Markerapi-marker, MarkerParametersapi-marker-parameters, and MarkerParameterValueapi-marker-parameter-value

Compatibility

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 of mdast-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

See contributing.mdcontributing in syntax-tree/.githubhealth for ways to get started. See support.mdsupport 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.

License

MITlicense © Titus Wormerauthor