diff --git a/exporters/confluence.js b/exporters/confluence.js index 2f00a76..675ef15 100644 --- a/exporters/confluence.js +++ b/exporters/confluence.js @@ -5,6 +5,7 @@ const path = require('node:path'); const { slugify, escapeXml } = require('../core/util'); const { encodePng } = require('../core/png'); const { guideSlug, renderAllImages, stepContentGroups, codeBlockText } = require('./common'); +const { anchorFor, guideMetaLines, guideSummary } = require('./document-layout'); /** * Confluence storage-format export. Writes a single XHTML document plus a @@ -14,6 +15,7 @@ const { guideSlug, renderAllImages, stepContentGroups, codeBlockText } = require const DEFAULT_TEMPLATE = { includeImages: true, + toc: true, }; const MACRO_FOR_LEVEL = { @@ -23,10 +25,6 @@ const MACRO_FOR_LEVEL = { success: 'tip', }; -function anchorFor(step) { - return `step-${step.number.replace(/\./g, '-')}`; -} - function stepLinkRewrite(html, ast) { return String(html || '').replace(/href="step:([^"]+)"/g, (m, id) => { const target = ast.steps.find((s) => s.stepId === id); @@ -112,7 +110,11 @@ function exportConfluence(ast, outDir, template = {}) {
${escapeXml(line.split(': ')[0])}: ${escapeXml(line.slice(line.indexOf(': ') + 2))}
`).join('\n')} +${escapeXml(guideSummary(ast))}
${ast.guide.descriptionHtml ? `