2017-08-25 16:24:12 -04:00

35 lines
940 B
JavaScript

import unified from 'unified';
import remarkToMarkdown from 'remark-parse';
import { Mark } from 'prosemirror-model';
import markdownToProseMirror from './markdownToProseMirror';
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()
.use(markdownToProseMirror, { state })
.runSync(result);
}
/**
* Gets the parser and makes schema and plugins available at top scope.
* @param {Schema} schema - a ProseMirror schema
* @param {Map} plugins - Immutable Map of registered plugins
*/
function parserGetter(schema, plugins) {
state.schema = schema;
state.plugins = plugins;
return parser;
}
export default parserGetter;