Add embed method in markdown plugin (#263)

This commit is contained in:
Simon Lecoq
2021-04-26 18:27:41 +02:00
committed by GitHub
parent 43ec9a7c54
commit d3211313e5
3 changed files with 58 additions and 4 deletions

View File

@@ -82,11 +82,17 @@
catch (error) {
console.debug(error)
}
//Embed method
const embed = async(q, name = Math.random().toString().substring(2)) => {
q = Object.fromEntries([...Object.entries(q).map(([key, value]) => [key.replace(/^plugin_/, "").replace(/_/g, "."), value]), ["base", false], ["config.animations", false]])
const {rendered} = await metrics({login, q}, {...arguments[1], convert:null}, arguments[2])
return `<img class="metrics-cachable" data-name="${name}" src="data:image/svg+xml;base64,${Buffer.from(rendered).toString("base64")}">`
}
//Rendering template source
let rendered = source.replace(/\{\{ (?<content>[\s\S]*?) \}\}/g, "{%= $<content> %}")
console.debug(rendered)
for (const delimiters of [{openDelimiter:"<", closeDelimiter:">"}, {openDelimiter:"{", closeDelimiter:"}"}])
rendered = await ejs.render(rendered, {...data, s:imports.s, f:imports.format}, {views, async:true, ...delimiters})
rendered = await ejs.render(rendered, {...data, s:imports.s, f:imports.format, embed}, {views, async:true, ...delimiters})
console.debug(`metrics/compute/${login} > success`)
return {rendered, mime:"text/plain"}
}