diff --git a/src/elements/markdown/renderer.mjs b/src/elements/markdown/renderer.mjs
index 501b7e5..8cb52a5 100644
--- a/src/elements/markdown/renderer.mjs
+++ b/src/elements/markdown/renderer.mjs
@@ -10,11 +10,27 @@ export class MarkdownElement extends CustomElement {
return document.getElementById("template-markdown")
}
+ // noinspection JSUnusedGlobalSymbols
/**
* {@link Marked} Markdown renderer.
* @type {Marked}
*/
static MARKED = new Marked({
+ tokenizer: {
+ // Fix single, double, and triple equals on a single line being interpreted as headings
+ lheading(src) {
+ const cap = /^(?!bull )((?:.|\n(?!\s*?\n|bull ))+?)\n {0,3}(={4,}|-{4,}) *(?:\n+|$)/.exec(src);
+ if (cap) {
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[2].charAt(0) === '=' ? 1 : 2,
+ text: cap[1],
+ tokens: this.lexer.inline(cap[1])
+ };
+ }
+ }
+ },
extensions: [
{
name: "frontmatter",
@@ -38,6 +54,27 @@ export class MarkdownElement extends CustomElement {
return ``;
}
},
+ {
+ name: "mathBlock",
+ level: "block",
+ start(src) {
+ const match = src.match(/[$][$]/)
+ return match?.index
+ },
+ tokenizer(src, _) {
+ const match = src.match(/^[$][$](.*?)[$][$]/s)
+ if(match) {
+ return {
+ type: "mathBlock",
+ raw: match[0],
+ document: match[1],
+ }
+ }
+ },
+ renderer(token) {
+ return ``
+ }
+ },
{
name: "wikilink",
level: "inline",
@@ -45,7 +82,7 @@ export class MarkdownElement extends CustomElement {
return src.match(/\[\[/)?.index
},
tokenizer(src, _) {
- const match = src.match(/^\[\[([^|\]]+)(?:\|([^\]]+))?]]/)
+ const match = src.match(/^\[\[([^|\]]*)(?:\|([^\]]*))?]]/)
if(match) {
return {
type: "wikilink",
@@ -79,26 +116,6 @@ export class MarkdownElement extends CustomElement {
return ``
}
},
- {
- name: "mathBlock",
- level: "block",
- start(src) {
- return src.match(/[$][$]/)?.index
- },
- tokenizer(src, _) {
- const match = src.match(/^[$][$](.+?)[$][$]/s)
- if(match) {
- return {
- type: "mathBlock",
- raw: match[0],
- document: match[1],
- }
- }
- },
- renderer(token) {
- return ``
- }
- },
{
name: "mathInline",
level: "inline",
@@ -126,7 +143,7 @@ export class MarkdownElement extends CustomElement {
return src.match(/==/)?.index
},
tokenizer(src, _) {
- const match = src.match(/^==(.+?)==/)
+ const match = src.match(/^==(.*?)==/)
if(match) {
return {
type: "highlight",