fix: columns

This commit is contained in:
hypercross 2026-03-23 22:18:11 +08:00
parent 6f8be557b4
commit 028074e4f1
2 changed files with 68 additions and 1 deletions

64
src/markdown/columns.ts Normal file
View File

@ -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 `</div><div class="col${sfx}">`;
}
},{
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 `<div class="cols"><div class="col${sfx}">`;
}
},{
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 `</div></div>`;
}
}
];
}

View File

@ -5,6 +5,7 @@ import markedAlert from "marked-alert";
import markedMermaid from "./mermaid"; import markedMermaid from "./mermaid";
import markedTable from "./table"; import markedTable from "./table";
import {gfmHeadingId} from "marked-gfm-heading-id"; import {gfmHeadingId} from "marked-gfm-heading-id";
import markedColumns from "./columns";
let globalIconPrefix: string | undefined = undefined; let globalIconPrefix: string | undefined = undefined;
function overrideIconPrefix(path?: string){ function overrideIconPrefix(path?: string){
@ -45,8 +46,10 @@ const marked = new Marked()
} }
}, },
]), { ]), {
extensions: [
...markedColumns(),
{
// 自定义代码块渲染器,支持 yaml/tag 格式 // 自定义代码块渲染器,支持 yaml/tag 格式
extensions: [{
name: 'code-block-yaml-tag', name: 'code-block-yaml-tag',
level: 'block', level: 'block',
start(src: string) { start(src: string) {