35 lines
940 B
JavaScript
Raw Normal View History

import unified from 'unified';
import remarkToMarkdown from 'remark-parse';
import { Mark } from 'prosemirror-model';
2017-06-09 17:23:58 -04:00
import markdownToProseMirror from './markdownToProseMirror';
2017-06-09 17:23:58 -04:00
const state = { activeMarks: Mark.none, textsArray: [] };
/**
* Uses unified to parse markdown and apply plugins.
* @param {string} src raw markdown
* @returns {Node} a ProseMirror Node
*/
function parser(src) {
const result = unified()
.use(remarkToMarkdown, { fences: true, footnotes: true, pedantic: true })
.parse(src);
return unified()
2017-06-09 17:23:58 -04:00
.use(markdownToProseMirror, { state })
.runSync(result);
}
/**
* Gets the parser and makes schema and plugins available at top scope.
2017-06-09 17:23:58 -04:00
* @param {Schema} schema - a ProseMirror schema
* @param {Map} plugins - Immutable Map of registered plugins
*/
2017-06-09 17:23:58 -04:00
function parserGetter(schema, plugins) {
state.schema = schema;
state.plugins = plugins;
return parser;
}
export default parserGetter;