Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 1m2s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
90 lines
2.2 KiB
Plaintext
90 lines
2.2 KiB
Plaintext
;; Extension — block query + table of contents.
|
|
|
|
(st-bootstrap-classes!)
|
|
(content/bootstrap!)
|
|
(content-bootstrap-section!)
|
|
|
|
(define
|
|
d
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append (doc-empty "d") (mk-heading "h1" 1 "Intro"))
|
|
(mk-text "p1" "para"))
|
|
(mk-image "img" "/a.png" "alt"))
|
|
(mk-section
|
|
"s"
|
|
(list
|
|
(mk-heading "h2" 2 "Sub")
|
|
(mk-text "p2" "more")
|
|
(mk-image "img2" "/b.png" "b")))))
|
|
|
|
;; ── select-type (tree-wide) ──
|
|
(content-test
|
|
"select headings ids"
|
|
(map (fn (b) (blk-id b)) (content/select-type d "heading"))
|
|
(list "h1" "h2"))
|
|
(content-test
|
|
"select images ids"
|
|
(map (fn (b) (blk-id b)) (content/select-type d "image"))
|
|
(list "img" "img2"))
|
|
(content-test
|
|
"select text ids"
|
|
(map (fn (b) (blk-id b)) (content/select-type d "text"))
|
|
(list "p1" "p2"))
|
|
(content-test
|
|
"select section ids"
|
|
(map (fn (b) (blk-id b)) (content/select-type d "section"))
|
|
(list "s"))
|
|
|
|
;; ── count-type ──
|
|
(content-test "count headings" (content/count-type d "heading") 2)
|
|
(content-test "count images" (content/count-type d "image") 2)
|
|
(content-test "count dividers" (content/count-type d "divider") 0)
|
|
|
|
;; ── select with custom predicate ──
|
|
(content-test
|
|
"select-ids custom"
|
|
(content/select-ids d (fn (b) (= (blk-type b) "image")))
|
|
(list "img" "img2"))
|
|
(content-test
|
|
"select custom field"
|
|
(map
|
|
(fn (b) (blk-id b))
|
|
(content/select
|
|
d
|
|
(fn
|
|
(b)
|
|
(if
|
|
(= (blk-type b) "heading")
|
|
(= (blk-get b "level") 2)
|
|
false))))
|
|
(list "h2"))
|
|
|
|
;; ── headings / TOC ──
|
|
(content-test
|
|
"headings TOC"
|
|
(content/headings d)
|
|
(list {:id "h1" :text "Intro" :level 1} {:id "h2" :text "Sub" :level 2}))
|
|
(content-test
|
|
"empty doc no headings"
|
|
(content/headings (doc-empty "e"))
|
|
(list))
|
|
|
|
;; ── deeply nested ──
|
|
(define
|
|
deep
|
|
(doc-append
|
|
(doc-empty "d")
|
|
(mk-section
|
|
"o"
|
|
(list (mk-section "i" (list (mk-heading "deep" 3 "Deep")))))))
|
|
(content-test
|
|
"deep heading found"
|
|
(map (fn (b) (blk-id b)) (content/select-type deep "heading"))
|
|
(list "deep"))
|
|
(content-test
|
|
"deep toc level"
|
|
(get (first (content/headings deep)) :level)
|
|
3)
|