Link support 1/2
All checks were successful
Build and Deploy Nuxt / build (push) Successful in 59s

This commit is contained in:
2026-05-03 01:02:13 +02:00
parent 030060286f
commit 94e2b8bd47
6 changed files with 71 additions and 169 deletions

View File

@@ -27,7 +27,7 @@ const GetWidget = (type, name) => {
const marker = new Marked();
const extension = {
name: "something",
name: "widget",
level: "block",
tokenizer(src) {
@@ -37,7 +37,7 @@ const extension = {
if (!match) return;
return {
type: "something",
type: "widget",
raw: match[0],
name: match[1],
text: match[2],
@@ -50,7 +50,7 @@ const extension = {
};
const inlineExtension = {
name: "something_inline",
name: "widget_inline",
level: "inline",
start(src) {
return src.indexOf("@");
@@ -62,7 +62,7 @@ const inlineExtension = {
if (!match) return;
return {
type: "something_inline",
type: "widget_inline",
raw: match[0],
name: match[1],
text: match[2],
@@ -74,8 +74,32 @@ const inlineExtension = {
},
};
const linkExtension = {
name: "link_to",
level: "inline",
start(src) {
return src.indexOf("[[");
},
tokenizer(src) {
const rule = /^\[\[([^\n]*)\]\]/;
const match = rule.exec(src);
if (!match) return;
return {
type: "link_to",
raw: match[0],
link: match[1],
};
},
renderer(token) {
return `<span class="vue-link" data-href="${token.link}"></span>`;
},
};
marker.use({
extensions: [extension, inlineExtension],
extensions: [extension, inlineExtension, linkExtension],
});
function ParseMarkdown(source) {