diff --git a/.eleventy.js b/.eleventy.js index 0ec6ae2..8d69acf 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -90,30 +90,55 @@ module.exports = function (eleventyConfig) { } if (token.info.startsWith("ad-")) { const code = token.content.trim(); - if (code && code.toLowerCase().startsWith("title:")) { - const title = code.substring(6, code.indexOf("\n")); - const titleDiv = title - ? `
${title}
` + const parts = code.split("\n") + let titleLine; + let collapse; + let collapsible = false + let collapsed = true + let icon; + let color; + let nbLinesToSkip = 0 + for (let i = 0; i<4; i++) { + if (parts[i] && parts[i].trim()) { + let line = parts[i] && parts[i].trim().toLowerCase() + if (line.startsWith("title:")) { + titleLine = line.substring(6); + nbLinesToSkip ++; + } else if (line.startsWith("icon:")) { + icon = line.substring(5); + nbLinesToSkip ++; + } else if (line.startsWith("collapse:")) { + collapsible = true + collapse = line.substring(9); + if (collapse && collapse.trim().toLowerCase() == 'open') { + collapsed = false + } + nbLinesToSkip ++; + } else if (line.startsWith("color:")) { + color = line.substring(6); + nbLinesToSkip ++; + } + } + } + const foldDiv = collapsible ? `
+ + + +
` : ""; + const titleDiv = titleLine + ? `
${titleLine}
${foldDiv}
` : ""; - - return `
${titleDiv}\n
${md.render( - code.slice(code.indexOf("\n")) - )}
`; + let collapseClasses = titleLine && collapsible ? 'is-collapsible' : '' + if (collapsible && collapsed) { + collapseClasses += " is-collapsed" } - const title = `
${token.info - .charAt(3) - .toUpperCase()}${token.info - .substring(4) - .toLowerCase()}
`; - - return `
${title}\n
${md.render( - code + let res = `
${titleDiv}\n
${md.render( + parts.slice(nbLinesToSkip).join("\n") )}
`; + return res } // Other languages