Refactor site generation into a modular content pipeline
Deploy website / deploy (push) Successful in 24s
Deploy website / deploy (push) Successful in 24s
This commit is contained in:
1 parent
0f69028d4a
commit
146d516f24
20 files changed
+826
-427
No files matched your search
@@ -0,0 +1,20 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import { test } from 'node:test'
|
||||
import { renderMarkdownPage } from '../markdown.js'
|
||||
|
||||
test('a page uses matching IDs in document and TOC order, including nested duplicates', () => {
|
||||
const page = renderMarkdownPage('# Title\n\n### Repeat\n\n## Repeat\n\n### Repeat\n\nA note^[with **emphasis**].\n\n```js\nconst x = 1\n```')
|
||||
const ids = [...page.html.matchAll(/<h[2-6] id="([^"]+)"/g)].map((match) => match[1])
|
||||
const links = [...page.toc.matchAll(/href="#([^"]+)"/g)].map((match) => match[1])
|
||||
assert.deepEqual(ids, ['repeat', 'repeat-2', 'repeat-3'])
|
||||
assert.deepEqual(links, ids)
|
||||
assert.match(page.html, /id="sidenote-1"/)
|
||||
assert.match(page.html, /<strong>emphasis<\/strong>/)
|
||||
assert.match(page.html, /class="language-js"/)
|
||||
assert.equal(page.excerpt, 'A note.')
|
||||
})
|
||||
|
||||
test('sidenote numbering resets for each page', () => {
|
||||
assert.match(renderMarkdownPage('# One\n\nA^[first]').html, /id="sidenote-1"/)
|
||||
assert.match(renderMarkdownPage('# Two\n\nB^[second]').html, /id="sidenote-1"/)
|
||||
})
|
||||
Reference in new issue
Block a user