Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 22s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
79 lines
2.2 KiB
Plaintext
79 lines
2.2 KiB
Plaintext
;; Extension — nested document outline.
|
|
|
|
(st-bootstrap-classes!)
|
|
(content/bootstrap!)
|
|
(content-bootstrap-section!)
|
|
|
|
;; H1 / H2 H2 / H1 -> [h1{children: h2,h3}, h4]
|
|
(define
|
|
d
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append (doc-empty "d") (mk-heading "a" 1 "A"))
|
|
(mk-heading "b" 2 "B"))
|
|
(mk-heading "c" 2 "C"))
|
|
(mk-heading "e" 1 "E")))
|
|
|
|
(define o (content/outline d))
|
|
(content-test "outline top count" (len o) 2)
|
|
(content-test "outline first id" (get (first o) :id) "a")
|
|
(content-test
|
|
"outline first children ids"
|
|
(map (fn (n) (get n :id)) (get (first o) :children))
|
|
(list "b" "c"))
|
|
(content-test "outline second top" (get (nth o 1) :id) "e")
|
|
(content-test
|
|
"outline second no children"
|
|
(get (nth o 1) :children)
|
|
(list))
|
|
|
|
;; ── deeper nesting: H1 / H2 / H3 ──
|
|
(define
|
|
d2
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append (doc-empty "d") (mk-heading "x" 1 "X"))
|
|
(mk-heading "y" 2 "Y"))
|
|
(mk-heading "z" 3 "Z")))
|
|
(define o2 (content/outline d2))
|
|
(content-test "deep top" (get (first o2) :id) "x")
|
|
(content-test
|
|
"deep child"
|
|
(get (first (get (first o2) :children)) :id)
|
|
"y")
|
|
(content-test
|
|
"deep grandchild"
|
|
(get (first (get (first (get (first o2) :children)) :children)) :id)
|
|
"z")
|
|
|
|
;; ── node carries text + level ──
|
|
(content-test "node text" (get (first o) :text) "A")
|
|
(content-test "node level" (get (first o) :level) 1)
|
|
|
|
;; ── empty / no headings ──
|
|
(content-test "outline empty" (content/outline (doc-empty "e")) (list))
|
|
(content-test
|
|
"outline no headings"
|
|
(content/outline (doc-append (doc-empty "d") (mk-text "p" "x")))
|
|
(list))
|
|
|
|
;; ── starting at H2 (no H1) still forms a forest ──
|
|
(define
|
|
d3
|
|
(doc-append
|
|
(doc-append (doc-empty "d") (mk-heading "p" 2 "P"))
|
|
(mk-heading "q" 2 "Q")))
|
|
(content-test "no-h1 forest count" (len (content/outline d3)) 2)
|
|
|
|
;; ── headings nested inside sections are found (tree-wide via query) ──
|
|
(define
|
|
d4
|
|
(doc-append
|
|
(doc-append (doc-empty "d") (mk-heading "top" 1 "Top"))
|
|
(mk-section "s" (list (mk-heading "in" 2 "In")))))
|
|
(content-test
|
|
"section heading nested in outline"
|
|
(map (fn (n) (get n :id)) (get (first (content/outline d4)) :children))
|
|
(list "in"))
|