micromark-factory-destination
micromark factory to parse destinations (found in resources, definitions).
Contents
Install
This package is ESM only. In Node.js (version 12.20+, 14.14+, 16.0+, 18.0+), install with npm:
npm install micromark-factory-destination
In Deno with esm.sh
:
import {factoryDestination} from 'https://esm.sh/micromark-factory-destination@1'
In browsers with esm.sh
:
<script type="module">
import {factoryDestination} from 'https://esm.sh/micromark-factory-destination@1?bundle'
</script>
Use
import {factoryDestination} from 'micromark-factory-destination'
import {codes} from 'micromark-util-symbol/codes'
import {types} from 'micromark-util-symbol/types'
// A micromark tokenizer that uses the factory:
/**
* @this {TokenizeContext}
* @type {Tokenizer}
*/
function tokenizeResource(effects, ok, nok) {
return start
// …
/** @type {State} */
function open(code) {
if (code === codes.rightParenthesis) {
return end(code)
}
return factoryDestination(
effects,
destinationAfter,
nok,
types.resourceDestination,
types.resourceDestinationLiteral,
types.resourceDestinationLiteralMarker,
types.resourceDestinationRaw,
types.resourceDestinationString,
constants.linkResourceDestinationBalanceMax
)(code)
}
// …
}
API
This module exports the following identifiers: factoryDestination
. There is no default export.
factoryDestination(…)
Parameters
effects
(Effects
) — Contextok
(State
) — State switched to when successfulnok
(State
) — State switched to when not successfultype
(string
) — Token type for whole (<a>
orb
)literalType
(string
) — Token type when enclosed (<a>
)literalMarkerType
(string
) — Token type for enclosing (<
and>
)rawType
(string
) — Token type when not enclosed (b
)stringType
(string
) — Token type for the URI (a
orb
)max
(number
, default:Infinity
) — Max depth of nested parens
Returns
State
.
Examples
<a>
<a\>b>
<a b>
<a)>
a
a\)b
a(b)c
a(b)
Security
See security.md
in micromark/.github
for how to submit a security report.
Contribute
See contributing.md
in micromark/.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, organisation, or community you agree to abide by its terms.