1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /**
- * @typedef {import('micromark-util-types').Create} Create
- * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension
- * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct
- * @typedef {import('micromark-util-types').ParseContext} ParseContext
- * @typedef {import('micromark-util-types').ParseOptions} ParseOptions
- */
- import {combineExtensions} from 'micromark-util-combine-extensions'
- import {content} from './initialize/content.js'
- import {document} from './initialize/document.js'
- import {flow} from './initialize/flow.js'
- import {string, text} from './initialize/text.js'
- import {createTokenizer} from './create-tokenizer.js'
- import * as defaultConstructs from './constructs.js'
- /**
- * @param {ParseOptions | null | undefined} [options]
- * @returns {ParseContext}
- */
- export function parse(options) {
- const settings = options || {}
- const constructs =
- /** @type {FullNormalizedExtension} */
- combineExtensions([defaultConstructs, ...(settings.extensions || [])])
- /** @type {ParseContext} */
- const parser = {
- defined: [],
- lazy: {},
- constructs,
- content: create(content),
- document: create(document),
- flow: create(flow),
- string: create(string),
- text: create(text)
- }
- return parser
- /**
- * @param {InitialConstruct} initial
- */
- function create(initial) {
- return creator
- /** @type {Create} */
- function creator(from) {
- return createTokenizer(parser, initial, from)
- }
- }
- }
|