export const TokenIdentifiers = new Map Token; }>(); // TokenIdentifiers.set("p", { // rx: /\n{2,}((?:.|\n)*?)\n{2,}/g, // parse(s) { // const [_, content] = s.match(new RegExp(this.rx, ""))!; // return { // // content, // content, // raw: s, // metadata: {}, // type: "p", // uuid: crypto.randomUUID(), // }; // }, // }); const rendersContentOnly = true; const rendersChildrenOnly = true; TokenIdentifiers.set("card", { rx: /\[{2}\n+(\n|.*?)\n+\]{2}/g, parse(s) { return { content: s.match(new RegExp(this.rx, ""))?.at(1) || "Unable to parse card", raw: s, metadata: {}, type: "card", uuid: crypto.randomUUID(), }; }, }); TokenIdentifiers.set("code", { rx: /`{3}\n+((?:.|\n)*?)\n+`{3}/g, parse(s) { return { content: s.match(new RegExp(this.rx, ""))?.at(1) || "Unable to parse code", raw: s, metadata: {}, type: "code", uuid: crypto.randomUUID(), rendersContentOnly, }; }, }); TokenIdentifiers.set("grid", { rx: /(?:\[\])+\n+((?:.|\n)*?)\n+\/\[\]/g, parse(s) { return { content: s.match(new RegExp(this.rx, ""))?.at(1) || "Unable to parse grid", raw: s, metadata: { columns: s.split("\n").at(0)?.match(/\[\]/g)?.length.toString() || "1", }, type: "grid", uuid: crypto.randomUUID(), rendersChildrenOnly, }; }, }); TokenIdentifiers.set("heading", { rx: /^#+\s(.*?)$/gm, parse(s) { return { content: s.match(new RegExp(this.rx, ""))?.at(1) || "Unable to parse heading", raw: s, metadata: { strength: s.match(/#/g)?.length.toString() || "1", }, type: "heading", uuid: crypto.randomUUID(), rendersContentOnly, }; }, }); TokenIdentifiers.set("image", { rx: /\!\[(.*?)\]\((.*?)\)/g, parse(s) { const [_, title, src] = s.match(new RegExp(this.rx, ""))!; return { // content: inline, content: title.trim(), raw: s, metadata: { src, }, type: "image", uuid: crypto.randomUUID(), rendersContentOnly, }; }, }); TokenIdentifiers.set("anchor", { rx: /(?>/g, parse(s) { const [_, title, content] = s.match(new RegExp(this.rx, ""))!; return { // content, content, raw: s, metadata: { title }, type: "popover", uuid: crypto.randomUUID(), rendersContentOnly, }; }, }); TokenIdentifiers.set("accordion", { rx: /\[accordion(\s.*?)?]\n+((?:.|\n)*?)\n+\[\/accordion\]/g, parse(s) { const [_, title, content] = s.match(new RegExp(this.rx, ""))!; return { // content, content, raw: s, metadata: { title }, type: "accordion", uuid: crypto.randomUUID(), }; }, }); TokenIdentifiers.set("p", { rx: /(?<=\n\n)([\s\S]*?)(?=\n\n)/g, parse(s) { // const [_, content] = s.match(new RegExp(this.rx, ""))!; return { // content, content: s, raw: s, metadata: {}, type: "p", uuid: crypto.randomUUID(), }; }, }); // const p = TokenIdentifiers.get("p"); // TokenIdentifiers.clear(); // p && TokenIdentifiers.set("p", p);