Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return tokenizer;
}
// decorate for all block tokenizers
Object.keys(blockTokenizers).forEach(method => {
blockTokenizers[method] = tokenizerDecorator(blockTokenizers[method]);
});
// decorate for all inline tokenizers
Object.keys(inlineTokenizers).forEach(method => {
inlineTokenizers[method] = tokenizerDecorator(inlineTokenizers[method]);
});
// proxy set options to avoid remove the custom strategy option
(parse.Parser.prototype as any).setOptions = function(opts) {
if (this.options.strategy) {
opts.strategy = this.options.strategy;
}
setOptions.call(this, opts);
};
export default parse as Plugin<[Partial?]>;
import parse, { RemarkParseOptions } from 'remark-parse';
import { Plugin } from 'unified';
export interface IParseProps extends RemarkParseOptions {
/**
* transform strategy
* @note turn on all markdown tokenizers by default
* only turn on tokenizers which use for parse yaml data if pass 'data'
*/
strategy: 'default' | 'data';
}
const { blockTokenizers, inlineTokenizers, setOptions } = parse.Parser.prototype as any;
const oFencedCode = blockTokenizers.fencedCode;
const DISABLEABLE_TOKENIZERS = [
'indentedCode',
'fencedCode',
'blockquote',
'thematicBreak',
'list',
'setextHeading',
'html',
'footnote',
'definition',
'table',
'escape',
'autoLink',
'url',
'html',
export function parse(markdown: string): Root {
const parser = new Parser(null, vfile(markdown));
const parsed = parser.parse();
clean(parsed);
return parsed;
}