import type { MarkedExtension, Tokens } from 'marked' /** * A marked extension to support horizontal sliding images. * Syntax: */ export function markedSlider(): MarkedExtension { return { extensions: [ { name: `horizontalSlider`, level: `block`, start(src: string) { return src.match(/^/ const match = src.match(rule) if (match) { return { type: `horizontalSlider`, raw: match[0], text: match[1], } } return undefined }, renderer(token: Tokens.Generic) { const { text } = token const imageMatches = text.match(/!\[(.*?)\]\((.*?)\)/g) || [] if (imageMatches.length === 0) { return `` } const images = imageMatches.map((img: string) => { const altMatch = img.match(/!\[(.*?)\]/) || [] const srcMatch = img.match(/\]\((.*?)\)/) || [] const alt = altMatch[1] || `` const src = srcMatch[1] || `` // 新主题系统:不再需要内联样式 return { src, alt } }) // 使用微信公众号兼容的滑动容器布局 // 使用微信支持的section标签和特殊样式组合 return `
${images.map((img: { src: string, alt: string }, _index: number) => `
${img.alt}

${img.alt}

`).join(``)}

<<< 左右滑动看更多 >>>

` }, }, ], } }