diff --git a/src/markdown/columns.ts b/src/markdown/columns.ts
new file mode 100644
index 0000000..d170a43
--- /dev/null
+++ b/src/markdown/columns.ts
@@ -0,0 +1,64 @@
+import {TokenizerAndRendererExtension} from "marked";
+
+export default function markedColumns(): TokenizerAndRendererExtension[] {
+ return [{
+ name: 'col-divider',
+ level: 'block',
+ start(src: string) {
+ return src.match(/^-\|-+ *\n/)?.index;
+ },
+ tokenizer(src){
+ const match = src.match(/^-\|(-+) *\n/);
+ if(!match) return;
+ return {
+ type: 'col-divider',
+ raw: match[0],
+ tokens: []
+ };
+ },
+ renderer(token){
+ const extra = token.raw.match(/^-\|(-+) *\n/)?.[1].length || 0;
+ const sfx = extra > 1 ? '-' + (extra) : '';
+ return `
`;
+ }
+ },{
+ name: 'col-start',
+ level: 'block',
+ start(src: string) {
+ return src.match(/^\|--+ *\n/)?.index;
+ },
+ tokenizer(src){
+ const match = src.match(/^\|-(-+) *\n/);
+ if(!match) return;
+ return {
+ type: 'col-start',
+ raw: match[0],
+ tokens: []
+ };
+ },
+ renderer(token){
+ const extra = token.raw.match(/^\|-(-+) *\n/)?.[1].length || 0;
+ const sfx = extra > 1 ? '-' + (extra) : '';
+ return `
`;
+ }
+ },{
+ name: 'col-end',
+ level: 'block',
+ start(src: string) {
+ return src.match(/^--\| *\n/)?.index;
+ },
+ tokenizer(src){
+ const match = src.match(/^--\| *\n/);
+ if(!match) return;
+ return {
+ type: 'col-end',
+ raw: match[0],
+ tokens: []
+ };
+ },
+ renderer(token){
+ return `
`;
+ }
+ }
+ ];
+}
\ No newline at end of file
diff --git a/src/markdown/index.ts b/src/markdown/index.ts
index af78697..0ea0ddc 100644
--- a/src/markdown/index.ts
+++ b/src/markdown/index.ts
@@ -5,6 +5,7 @@ import markedAlert from "marked-alert";
import markedMermaid from "./mermaid";
import markedTable from "./table";
import {gfmHeadingId} from "marked-gfm-heading-id";
+import markedColumns from "./columns";
let globalIconPrefix: string | undefined = undefined;
function overrideIconPrefix(path?: string){
@@ -45,8 +46,10 @@ const marked = new Marked()
}
},
]), {
+ extensions: [
+ ...markedColumns(),
+ {
// 自定义代码块渲染器,支持 yaml/tag 格式
- extensions: [{
name: 'code-block-yaml-tag',
level: 'block',
start(src: string) {