Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
80 lines
2.2 KiB
Plaintext
80 lines
2.2 KiB
Plaintext
;; Extension — Markdown render mode. asMarkdown is a polymorphic message send;
|
|
;; the boundary supplies the newline.
|
|
|
|
(st-bootstrap-classes!)
|
|
(content/bootstrap!)
|
|
(content-bootstrap-markdown!)
|
|
|
|
(define nl (str "\n"))
|
|
|
|
;; ── per-block ──
|
|
(content-test
|
|
"heading h3"
|
|
(asMarkdown (mk-heading "h" 3 "Title"))
|
|
"### Title")
|
|
(content-test
|
|
"heading h1"
|
|
(asMarkdown (mk-heading "h" 1 "T"))
|
|
"# T")
|
|
(content-test "text md" (asMarkdown (mk-text "p" "body")) "body")
|
|
(content-test
|
|
"quote md"
|
|
(asMarkdown (mk-quote "q" "Ada" "to err"))
|
|
"> to err")
|
|
(content-test
|
|
"image md"
|
|
(asMarkdown (mk-image "i" "/c.png" "cat"))
|
|
"")
|
|
(content-test
|
|
"embed md"
|
|
(asMarkdown (mk-embed "e" "https://v/1" "vimeo"))
|
|
"[embed](https://v/1)")
|
|
(content-test "divider md" (asMarkdown (mk-divider "d")) "---")
|
|
(content-test
|
|
"code md"
|
|
(asMarkdown (mk-code "c" "sx" "(+ 1 2)"))
|
|
(str "```sx" nl "(+ 1 2)" nl "```"))
|
|
(content-test
|
|
"ul md"
|
|
(asMarkdown (mk-list "u" false (list "a" "b" "c")))
|
|
(str "- a" nl "- b" nl "- c"))
|
|
(content-test
|
|
"ol md"
|
|
(asMarkdown (mk-list "o" true (list "x" "y")))
|
|
(str "1. x" nl "1. y"))
|
|
(content-test "empty list md" (asMarkdown (mk-list "e" false (list))) "")
|
|
|
|
;; ── document joins blocks with a blank line ──
|
|
(define
|
|
d
|
|
(doc-append
|
|
(doc-append
|
|
(doc-append (doc-empty "doc") (mk-heading "h" 2 "Title"))
|
|
(mk-text "p" "Hello"))
|
|
(mk-divider "d")))
|
|
(content-test
|
|
"doc md"
|
|
(asMarkdown d)
|
|
(str "## Title" nl nl "Hello" nl nl "---"))
|
|
(content-test "empty doc md" (asMarkdown (doc-empty "e")) "")
|
|
|
|
;; ── via facade ──
|
|
(content-test "render md" (content/render d "md") (asMarkdown d))
|
|
(content-test "render markdown" (content/render d "markdown") (asMarkdown d))
|
|
(content-test "render md keyword" (content/render d :md) (asMarkdown d))
|
|
(content-test "content/markdown alias" (content/markdown d) (asMarkdown d))
|
|
(content-test
|
|
"block-markdown alias"
|
|
(block-markdown (mk-heading "h" 2 "X"))
|
|
"## X")
|
|
|
|
;; ── reflects edits / immutability ──
|
|
(content-test
|
|
"md after update"
|
|
(asMarkdown (doc-update d "p" "text" "Edited"))
|
|
(str "## Title" nl nl "Edited" nl nl "---"))
|
|
(content-test
|
|
"md original unchanged"
|
|
(asMarkdown d)
|
|
(str "## Title" nl nl "Hello" nl nl "---"))
|