25 lines
696 B
TypeScript
25 lines
696 B
TypeScript
import type markdownIt from 'markdown-it'
|
|
import container from 'markdown-it-container'
|
|
import type Token from 'markdown-it/lib/token.mjs'
|
|
|
|
function createReplContainer(md: markdownIt, type: string) {
|
|
const validate = (info: string): boolean => info.trim().startsWith(type)
|
|
|
|
const render = (tokens: Token[], index: number): string => {
|
|
const token = tokens[index]
|
|
if (token.nesting === 1)
|
|
return '<LanguageRepl>'
|
|
|
|
else
|
|
return '</LanguageRepl>'
|
|
}
|
|
|
|
md.use(container, type, { validate, render })
|
|
}
|
|
|
|
export function langReplPlugin(md: markdownIt) {
|
|
createReplContainer(md, 'kotlin-repl')
|
|
createReplContainer(md, 'go-repl')
|
|
createReplContainer(md, 'rust-repl')
|
|
}
|