;; Extension — document statistics.

(st-bootstrap-classes!)
(content/bootstrap!)
(content-bootstrap-text!)
(content-bootstrap-section!)

;; ── empty doc ──
(define e (doc-empty "e"))
(content-test "empty words" (content/word-count e) 0)
(content-test "empty chars" (content/char-count e) 0)
(content-test "empty blocks" (content/block-count e) 0)
(content-test "empty reading" (content/reading-minutes e) 0)
(content-test "empty stats" (content/stats e) {:blocks 0 :reading-minutes 0 :words 0 :chars 0})

;; ── simple doc ──
(define
  d
  (doc-append
    (doc-append (doc-empty "d") (mk-heading "h" 1 "Hello World"))
    (mk-text "p" "one two three")))
(content-test "word count" (content/word-count d) 5)
(content-test
  "char count"
  (content/char-count d)
  (string-length "Hello World one two three"))
(content-test "block count" (content/block-count d) 2)
(content-test "reading rounds up" (content/reading-minutes d) 1)

;; ── reading time at 0 vs 1 word ──
(content-test
  "one word one minute"
  (content/reading-minutes (doc-append (doc-empty "d") (mk-text "p" "hi")))
  1)

;; ── block count includes nested section children ──
(define
  nested
  (doc-append
    (doc-empty "d")
    (mk-section
      "s"
      (list (mk-heading "nh" 1 "A") (mk-text "np" "b c")))))
(content-test
  "block count counts section + children"
  (content/block-count nested)
  3)
(content-test
  "word count descends into section"
  (content/word-count nested)
  3)

;; ── deep nesting ──
(define
  deep
  (doc-append
    (doc-empty "d")
    (mk-section
      "o"
      (list (mk-text "a" "x") (mk-section "i" (list (mk-text "b" "y z")))))))
(content-test "deep block count" (content/block-count deep) 4)
(content-test "deep word count" (content/word-count deep) 3)

;; ── stats dict shape ──
(define s (content/stats d))
(content-test "stats words" (get s :words) 5)
(content-test "stats blocks" (get s :blocks) 2)
(content-test "stats has reading" (get s :reading-minutes) 1)
