prosemirror-markdown
Version:
ProseMirror Markdown integration
277 lines (228 loc) • 28.4 kB
Markdown
<h1>prosemirror-markdown</h1>
<p>[ <a href="http://prosemirror.net"><strong>WEBSITE</strong></a> | <a href="https://github.com/prosemirror/prosemirror-markdown/issues"><strong>ISSUES</strong></a> | <a href="https://discuss.prosemirror.net"><strong>FORUM</strong></a> | <a href="https://gitter.im/ProseMirror/prosemirror"><strong>GITTER</strong></a> ]</p>
<p>This is a (non-core) module for <a href="http://prosemirror.net">ProseMirror</a>.
ProseMirror is a well-behaved rich semantic content editor based on
contentEditable, with support for collaborative editing and custom
document schemas.</p>
<p>This module implements a ProseMirror
<a href="https://prosemirror.net/docs/guide/#schema">schema</a> that corresponds to
the document schema used by <a href="http://commonmark.org/">CommonMark</a>, and
a parser and serializer to convert between ProseMirror documents in
that schema and CommonMark/Markdown text.</p>
<p>This code is released under an
<a href="https://github.com/prosemirror/prosemirror/tree/master/LICENSE">MIT license</a>.
There's a <a href="http://discuss.prosemirror.net">forum</a> for general
discussion and support requests, and the
<a href="https://github.com/prosemirror/prosemirror/issues">Github bug tracker</a>
is the place to report issues.</p>
<p>We aim to be an inclusive, welcoming community. To make that explicit,
we have a <a href="http://contributor-covenant.org/version/1/1/0/">code of
conduct</a> that applies
to communication around the project.</p>
<h2>Documentation</h2>
<dl>
<dt id="schema">
<code><strong><a href="#schema">schema</a></strong>: <span class="type">Schema</span><<span class="string">"doc"</span> | <span class="string">"paragraph"</span> | <span class="string">"blockquote"</span> | <span class="string">"horizontal_rule"</span> | <span class="string">"heading"</span> | <span class="string">"code_block"</span> | <span class="string">"ordered_list"</span> | <span class="string">"bullet_list"</span> | <span class="string">"list_item"</span> | <span class="string">"text"</span> | <span class="string">"image"</span> | <span class="string">"hard_break"</span>, <span class="string">"em"</span> | <span class="string">"strong"</span> | <span class="string">"link"</span> | <span class="string">"code"</span>></code></dt>
<dd><p>Document schema for the data model used by CommonMark.</p>
</dd>
<dt id="MarkdownParser">
<h4>
<code><span class=keyword>class</span></code>
<a href="#MarkdownParser">MarkdownParser</a></h4>
</dt>
<dd><p>A configuration of a Markdown parser. Such a parser uses
<a href="https://github.com/markdown-it/markdown-it">markdown-it</a> to
tokenize a file, and then runs the custom rules it is given over
the tokens to create a ProseMirror document tree.</p>
<dl><dt id="MarkdownParser.constructor">
<code><span class=keyword>new</span> <strong><a href="#MarkdownParser.constructor">MarkdownParser</a></strong>(<a id="MarkdownParser.constructor^schema" href="#MarkdownParser.constructor^schema"><span class=param>schema</span></a>: <span class="type">Schema</span>, <a id="MarkdownParser.constructor^tokenizer" href="#MarkdownParser.constructor^tokenizer"><span class=param>tokenizer</span></a>: <span class="type">any</span>, <a id="MarkdownParser.constructor^tokens" href="#MarkdownParser.constructor^tokens"><span class=param>tokens</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<a href="#ParseSpec"><span class="type">ParseSpec</span></a>>)</code></dt>
<dd><p>Create a parser with the given configuration. You can configure
the markdown-it parser to parse the dialect you want, and provide
a description of the ProseMirror entities those tokens map to in
the <code>tokens</code> object, which maps token names to descriptions of
what to do with them. Such a description is an object, and may
have the following properties:</p>
</dd><dt id="MarkdownParser.schema">
<code><strong><a href="#MarkdownParser.schema">schema</a></strong>: <span class="type">Schema</span></code></dt>
<dd><p>The parser's document schema.</p>
</dd><dt id="MarkdownParser.tokenizer">
<code><strong><a href="#MarkdownParser.tokenizer">tokenizer</a></strong>: <span class="type">any</span></code></dt>
<dd><p>This parser's markdown-it tokenizer.</p>
</dd><dt id="MarkdownParser.tokens">
<code><strong><a href="#MarkdownParser.tokens">tokens</a></strong>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<a href="#ParseSpec"><span class="type">ParseSpec</span></a>></code></dt>
<dd><p>The value of the <code>tokens</code> object used to construct this
parser. Can be useful to copy and modify to base other parsers
on.</p>
</dd><dt id="MarkdownParser.parse">
<code><strong><a href="#MarkdownParser.parse">parse</a></strong>(<a id="MarkdownParser.parse^text" href="#MarkdownParser.parse^text"><span class=param>text</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>) → <span class="type">any</span></code></dt>
<dd><p>Parse a string as <a href="http://commonmark.org/">CommonMark</a> markup,
and create a ProseMirror document as prescribed by this parser's
rules.</p>
</dd></dl>
</dd>
<dt id="ParseSpec">
<h4>
<code><span class=keyword>interface</span></code>
<a href="#ParseSpec">ParseSpec</a></h4>
</dt>
<dd><p>Object type used to specify how Markdown tokens should be parsed.</p>
<dl><dt id="ParseSpec.node">
<code><strong><a href="#ParseSpec.node">node</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>This token maps to a single node, whose type can be looked up
in the schema under the given name. Exactly one of <code>node</code>,
<code>block</code>, or <code>mark</code> must be set.</p>
</dd><dt id="ParseSpec.block">
<code><strong><a href="#ParseSpec.block">block</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>This token (unless <code>noCloseToken</code> is true) comes in <code>_open</code>
and <code>_close</code> variants (which are appended to the base token
name provides a the object property), and wraps a block of
content. The block should be wrapped in a node of the type
named to by the property's value. If the token does not have
<code>_open</code> or <code>_close</code>, use the <code>noCloseToken</code> option.</p>
</dd><dt id="ParseSpec.mark">
<code><strong><a href="#ParseSpec.mark">mark</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>This token (again, unless <code>noCloseToken</code> is true) also comes
in <code>_open</code> and <code>_close</code> variants, but should add a mark
(named by the value) to its content, rather than wrapping it
in a node.</p>
</dd><dt id="ParseSpec.attrs">
<code><strong><a href="#ParseSpec.attrs">attrs</a></strong>⁠?: <span class="type">Attrs</span></code></dt>
<dd><p>Attributes for the node or mark. When <code>getAttrs</code> is provided,
it takes precedence.</p>
</dd><dt id="ParseSpec.getAttrs">
<code><strong><a href="#ParseSpec.getAttrs">getAttrs</a></strong>⁠?: <span class=fn>fn</span>(<a id="ParseSpec.getAttrs^token" href="#ParseSpec.getAttrs^token"><span class=param>token</span></a>: <span class="type">any</span>, <a id="ParseSpec.getAttrs^tokenStream" href="#ParseSpec.getAttrs^tokenStream"><span class=param>tokenStream</span></a>: <span class="type">any</span>[], <a id="ParseSpec.getAttrs^index" href="#ParseSpec.getAttrs^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>) → <span class="type">Attrs</span></code></dt>
<dd><p>A function used to compute the attributes for the node or mark
that takes a <a href="https://markdown-it.github.io/markdown-it/#Token">markdown-it
token</a> and
returns an attribute object.</p>
</dd><dt id="ParseSpec.noCloseToken">
<code><strong><a href="#ParseSpec.noCloseToken">noCloseToken</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a></code></dt>
<dd><p>Indicates that the <a href="https://markdown-it.github.io/markdown-it/#Token">markdown-it
token</a> has
no <code>_open</code> or <code>_close</code> for the nodes. This defaults to <code>true</code>
for <code>code_inline</code>, <code>code_block</code> and <code>fence</code>.</p>
</dd><dt id="ParseSpec.ignore">
<code><strong><a href="#ParseSpec.ignore">ignore</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a></code></dt>
<dd><p>When true, ignore content for the matched token.</p>
</dd></dl>
</dd>
<dt id="defaultMarkdownParser">
<code><strong><a href="#defaultMarkdownParser">defaultMarkdownParser</a></strong>: <a href="#MarkdownParser"><span class="type">MarkdownParser</span></a></code></dt>
<dd><p>A parser parsing unextended <a href="http://commonmark.org/">CommonMark</a>,
without inline HTML, and producing a document in the basic schema.</p>
</dd>
<dt id="MarkdownSerializer">
<h4>
<code><span class=keyword>class</span></code>
<a href="#MarkdownSerializer">MarkdownSerializer</a></h4>
</dt>
<dd><p>A specification for serializing a ProseMirror document as
Markdown/CommonMark text.</p>
<dl><dt id="MarkdownSerializer.constructor">
<code><span class=keyword>new</span> <strong><a href="#MarkdownSerializer.constructor">MarkdownSerializer</a></strong>(<a id="MarkdownSerializer.constructor^nodes" href="#MarkdownSerializer.constructor^nodes"><span class=param>nodes</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<span class=fn>fn</span>(<a id="MarkdownSerializer.constructor^nodes^state" href="#MarkdownSerializer.constructor^nodes^state"><span class=param>state</span></a>: <a href="#MarkdownSerializerState"><span class="type">MarkdownSerializerState</span></a>, <a id="MarkdownSerializer.constructor^nodes^node" href="#MarkdownSerializer.constructor^nodes^node"><span class=param>node</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializer.constructor^nodes^parent" href="#MarkdownSerializer.constructor^nodes^parent"><span class=param>parent</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializer.constructor^nodes^index" href="#MarkdownSerializer.constructor^nodes^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>)>, <a id="MarkdownSerializer.constructor^marks" href="#MarkdownSerializer.constructor^marks"><span class=param>marks</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a>>, <a id="MarkdownSerializer.constructor^options" href="#MarkdownSerializer.constructor^options"><span class=param>options</span></a>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><span class=defaultvalue> = {}</span>)</code></dt>
<dd><p>Construct a serializer with the given configuration. The <code>nodes</code>
object should map node names in a given schema to function that
take a serializer state and such a node, and serialize the node.</p>
<dl><dt id="MarkdownSerializer.constructor^options">
<code><strong><a href="#MarkdownSerializer.constructor^options">options</a></strong></code></dt>
<dd><dl><dt id="MarkdownSerializer.constructor^options.escapeExtraCharacters">
<code><strong><a href="#MarkdownSerializer.constructor^options.escapeExtraCharacters">escapeExtraCharacters</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><span class="type">RegExp</span></a></code></dt>
<dd><p>Extra characters can be added for escaping. This is passed
directly to String.replace(), and the matching characters are
preceded by a backslash.</p>
</dd></dl></dd></dl></dd><dt id="MarkdownSerializer.nodes">
<code><strong><a href="#MarkdownSerializer.nodes">nodes</a></strong>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<span class=fn>fn</span>(<a id="MarkdownSerializer.nodes^state" href="#MarkdownSerializer.nodes^state"><span class=param>state</span></a>: <a href="#MarkdownSerializerState"><span class="type">MarkdownSerializerState</span></a>, <a id="MarkdownSerializer.nodes^node" href="#MarkdownSerializer.nodes^node"><span class=param>node</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializer.nodes^parent" href="#MarkdownSerializer.nodes^parent"><span class=param>parent</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializer.nodes^index" href="#MarkdownSerializer.nodes^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>)></code></dt>
<dd><p>The node serializer functions for this serializer.</p>
</dd><dt id="MarkdownSerializer.marks">
<code><strong><a href="#MarkdownSerializer.marks">marks</a></strong>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a>></code></dt>
<dd><p>The mark serializer info.</p>
</dd><dt id="MarkdownSerializer.options">
<code><strong><a href="#MarkdownSerializer.options">options</a></strong>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a></code></dt>
<dd><dl><dt id="MarkdownSerializer.options.escapeExtraCharacters">
<code><strong><a href="#MarkdownSerializer.options.escapeExtraCharacters">escapeExtraCharacters</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><span class="type">RegExp</span></a></code></dt>
<dd><p>Extra characters can be added for escaping. This is passed
directly to String.replace(), and the matching characters are
preceded by a backslash.</p>
</dd></dl></dd><dt id="MarkdownSerializer.serialize">
<code><strong><a href="#MarkdownSerializer.serialize">serialize</a></strong>(<a id="MarkdownSerializer.serialize^content" href="#MarkdownSerializer.serialize^content"><span class=param>content</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializer.serialize^options" href="#MarkdownSerializer.serialize^options"><span class=param>options</span></a>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object"><span class="type">Object</span></a><span class=defaultvalue> = {}</span>) → <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>Serialize the content of the given node to
<a href="http://commonmark.org/">CommonMark</a>.</p>
<dl><dt id="MarkdownSerializer.serialize^options">
<code><strong><a href="#MarkdownSerializer.serialize^options">options</a></strong></code></dt>
<dd><dl><dt id="MarkdownSerializer.serialize^options.tightLists">
<code><strong><a href="#MarkdownSerializer.serialize^options.tightLists">tightLists</a></strong>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a></code></dt>
<dd><p>Whether to render lists in a tight style. This can be overridden
on a node level by specifying a tight attribute on the node.
Defaults to false.</p>
</dd></dl></dd></dl></dd></dl>
</dd>
<dt id="MarkdownSerializerState">
<h4>
<code><span class=keyword>class</span></code>
<a href="#MarkdownSerializerState">MarkdownSerializerState</a></h4>
</dt>
<dd><p>This is an object used to track state and expose
methods related to markdown serialization. Instances are passed to
node and mark serialization methods (see <code>toMarkdown</code>).</p>
<dl><dt id="MarkdownSerializerState.options">
<code><strong><a href="#MarkdownSerializerState.options">options</a></strong>: {<span class=prop>tightLists</span>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a>, <span class=prop>escapeExtraCharacters</span>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><span class="type">RegExp</span></a>}</code></dt>
<dd><p>The options passed to the serializer.</p>
</dd><dt id="MarkdownSerializerState.wrapBlock">
<code><strong><a href="#MarkdownSerializerState.wrapBlock">wrapBlock</a></strong>(<a id="MarkdownSerializerState.wrapBlock^delim" href="#MarkdownSerializerState.wrapBlock^delim"><span class=param>delim</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.wrapBlock^firstDelim" href="#MarkdownSerializerState.wrapBlock^firstDelim"><span class=param>firstDelim</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.wrapBlock^node" href="#MarkdownSerializerState.wrapBlock^node"><span class=param>node</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializerState.wrapBlock^f" href="#MarkdownSerializerState.wrapBlock^f"><span class=param>f</span></a>: <span class=fn>fn</span>())</code></dt>
<dd><p>Render a block, prefixing each line with <code>delim</code>, and the first
line in <code>firstDelim</code>. <code>node</code> should be the node that is closed at
the end of the block, and <code>f</code> is a function that renders the
content of the block.</p>
</dd><dt id="MarkdownSerializerState.ensureNewLine">
<code><strong><a href="#MarkdownSerializerState.ensureNewLine">ensureNewLine</a></strong>()</code></dt>
<dd><p>Ensure the current content ends with a newline.</p>
</dd><dt id="MarkdownSerializerState.write">
<code><strong><a href="#MarkdownSerializerState.write">write</a></strong>(<a id="MarkdownSerializerState.write^content" href="#MarkdownSerializerState.write^content"><span class=param>content</span></a>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>)</code></dt>
<dd><p>Prepare the state for writing output (closing closed paragraphs,
adding delimiters, and so on), and then optionally add content
(unescaped) to the output.</p>
</dd><dt id="MarkdownSerializerState.closeBlock">
<code><strong><a href="#MarkdownSerializerState.closeBlock">closeBlock</a></strong>(<a id="MarkdownSerializerState.closeBlock^node" href="#MarkdownSerializerState.closeBlock^node"><span class=param>node</span></a>: <span class="type">Node</span>)</code></dt>
<dd><p>Close the block for the given node.</p>
</dd><dt id="MarkdownSerializerState.text">
<code><strong><a href="#MarkdownSerializerState.text">text</a></strong>(<a id="MarkdownSerializerState.text^text" href="#MarkdownSerializerState.text^text"><span class=param>text</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.text^escape" href="#MarkdownSerializerState.text^escape"><span class=param>escape</span></a>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a><span class=defaultvalue> = true</span>)</code></dt>
<dd><p>Add the given text to the document. When escape is not <code>false</code>,
it will be escaped.</p>
</dd><dt id="MarkdownSerializerState.render">
<code><strong><a href="#MarkdownSerializerState.render">render</a></strong>(<a id="MarkdownSerializerState.render^node" href="#MarkdownSerializerState.render^node"><span class=param>node</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializerState.render^parent" href="#MarkdownSerializerState.render^parent"><span class=param>parent</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializerState.render^index" href="#MarkdownSerializerState.render^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>)</code></dt>
<dd><p>Render the given node as a block.</p>
</dd><dt id="MarkdownSerializerState.renderContent">
<code><strong><a href="#MarkdownSerializerState.renderContent">renderContent</a></strong>(<a id="MarkdownSerializerState.renderContent^parent" href="#MarkdownSerializerState.renderContent^parent"><span class=param>parent</span></a>: <span class="type">Node</span>)</code></dt>
<dd><p>Render the contents of <code>parent</code> as block nodes.</p>
</dd><dt id="MarkdownSerializerState.renderInline">
<code><strong><a href="#MarkdownSerializerState.renderInline">renderInline</a></strong>(<a id="MarkdownSerializerState.renderInline^parent" href="#MarkdownSerializerState.renderInline^parent"><span class=param>parent</span></a>: <span class="type">Node</span>)</code></dt>
<dd><p>Render the contents of <code>parent</code> as inline content.</p>
</dd><dt id="MarkdownSerializerState.renderList">
<code><strong><a href="#MarkdownSerializerState.renderList">renderList</a></strong>(<a id="MarkdownSerializerState.renderList^node" href="#MarkdownSerializerState.renderList^node"><span class=param>node</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializerState.renderList^delim" href="#MarkdownSerializerState.renderList^delim"><span class=param>delim</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.renderList^firstDelim" href="#MarkdownSerializerState.renderList^firstDelim"><span class=param>firstDelim</span></a>: <span class=fn>fn</span>(<a id="MarkdownSerializerState.renderList^firstDelim^index" href="#MarkdownSerializerState.renderList^firstDelim^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>) → <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>)</code></dt>
<dd><p>Render a node's content as a list. <code>delim</code> should be the extra
indentation added to all lines except the first in an item,
<code>firstDelim</code> is a function going from an item index to a
delimiter for the first line of the item.</p>
</dd><dt id="MarkdownSerializerState.esc">
<code><strong><a href="#MarkdownSerializerState.esc">esc</a></strong>(<a id="MarkdownSerializerState.esc^str" href="#MarkdownSerializerState.esc^str"><span class=param>str</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.esc^startOfLine" href="#MarkdownSerializerState.esc^startOfLine"><span class=param>startOfLine</span></a>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a><span class=defaultvalue> = false</span>) → <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>Escape the given string so that it can safely appear in Markdown
content. If <code>startOfLine</code> is true, also escape characters that
have special meaning only at the start of the line.</p>
</dd><dt id="MarkdownSerializerState.repeat">
<code><strong><a href="#MarkdownSerializerState.repeat">repeat</a></strong>(<a id="MarkdownSerializerState.repeat^str" href="#MarkdownSerializerState.repeat^str"><span class=param>str</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <a id="MarkdownSerializerState.repeat^n" href="#MarkdownSerializerState.repeat^n"><span class=param>n</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>) → <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>Repeat the given string <code>n</code> times.</p>
</dd><dt id="MarkdownSerializerState.markString">
<code><strong><a href="#MarkdownSerializerState.markString">markString</a></strong>(<a id="MarkdownSerializerState.markString^mark" href="#MarkdownSerializerState.markString^mark"><span class=param>mark</span></a>: <span class="type">Mark</span>, <a id="MarkdownSerializerState.markString^open" href="#MarkdownSerializerState.markString^open"><span class=param>open</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean"><span class="prim">boolean</span></a>, <a id="MarkdownSerializerState.markString^parent" href="#MarkdownSerializerState.markString^parent"><span class=param>parent</span></a>: <span class="type">Node</span>, <a id="MarkdownSerializerState.markString^index" href="#MarkdownSerializerState.markString^index"><span class=param>index</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number"><span class="prim">number</span></a>) → <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a></code></dt>
<dd><p>Get the markdown string for a given opening or closing mark.</p>
</dd><dt id="MarkdownSerializerState.getEnclosingWhitespace">
<code><strong><a href="#MarkdownSerializerState.getEnclosingWhitespace">getEnclosingWhitespace</a></strong>(<a id="MarkdownSerializerState.getEnclosingWhitespace^text" href="#MarkdownSerializerState.getEnclosingWhitespace^text"><span class=param>text</span></a>: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>) → {<span class=prop>leading</span>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>, <span class=prop>trailing</span>⁠?: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String"><span class="prim">string</span></a>}</code></dt>
<dd><p>Get leading and trailing whitespace from a string. Values of
leading or trailing property of the return object will be undefined
if there is no match.</p>
</dd></dl>
</dd>
<dt id="defaultMarkdownSerializer">
<code><strong><a href="#defaultMarkdownSerializer">defaultMarkdownSerializer</a></strong>: <a href="#MarkdownSerializer"><span class="type">MarkdownSerializer</span></a></code></dt>
<dd><p>A serializer for the <a href="#schema">basic schema</a>.</p>
</dd>
</dl>