;; Extension — table-of-contents rendering. (st-bootstrap-classes!) (content/bootstrap!) (content-bootstrap-section!) (define nl (str "\n")) (define d (doc-append (doc-append (doc-append (doc-append (doc-empty "d") (mk-heading "intro" 1 "Intro")) (mk-text "p" "x")) (mk-heading "bg" 2 "Background")) (mk-section "s" (list (mk-heading "deep" 2 "Details"))))) ;; ── markdown TOC (indented by level) ── (content-test "toc markdown" (content/toc-markdown d) (str "- [Intro](#intro)" nl " - [Background](#bg)" nl " - [Details](#deep)")) ;; ── html TOC (anchor links) ── (content-test "toc html" (content/toc-html d) "
") ;; ── html escapes heading text ── (content-test "toc html escapes" (content/toc-html (doc-append (doc-empty "d") (mk-heading "h" 1 "A < B"))) "") ;; ── empty / no headings ── (content-test "toc html empty" (content/toc-html (doc-empty "e")) "") (content-test "toc markdown empty" (content/toc-markdown (doc-empty "e")) "") (content-test "toc no headings" (content/toc-html (doc-append (doc-empty "d") (mk-text "p" "just text"))) "") ;; ── single heading ── (content-test "toc single md" (content/toc-markdown (doc-append (doc-empty "d") (mk-heading "h" 1 "Only"))) "- [Only](#h)") ;; ── deep level indentation ── (content-test "toc deep indent" (content/toc-markdown (doc-append (doc-empty "d") (mk-heading "h" 3 "Deep"))) " - [Deep](#h)")