Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 48s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
;; content-on-sx — Markdown document export (frontmatter + body).
|
|
;;
|
|
;; content/markdown-doc emits a YAML-ish --- frontmatter block from the document
|
|
;; metadata (title/slug/tags) followed by the Markdown body, completing the
|
|
;; metadata round-trip with md/import (md/import ∘ content/markdown-doc keeps
|
|
;; title/slug/tags). With no metadata it is just asMarkdown.
|
|
;;
|
|
;; Requires (loaded by harness): doc.sx, meta.sx (doc-title/slug/tags),
|
|
;; markdown.sx (asMarkdown).
|
|
|
|
(define mdd-nl (str "\n"))
|
|
|
|
(define
|
|
mdd-join
|
|
(fn
|
|
(sep parts)
|
|
(cond
|
|
((= (len parts) 0) "")
|
|
((= (len parts) 1) (first parts))
|
|
(else (str (first parts) sep (mdd-join sep (rest parts)))))))
|
|
|
|
(define
|
|
content/-fm-parts
|
|
(fn
|
|
(doc)
|
|
(append
|
|
(append
|
|
(if
|
|
(= (doc-title doc) nil)
|
|
(list)
|
|
(list (str "title: " (doc-title doc))))
|
|
(if
|
|
(= (doc-slug doc) nil)
|
|
(list)
|
|
(list (str "slug: " (doc-slug doc)))))
|
|
(let
|
|
((tags (doc-tags doc)))
|
|
(if
|
|
(= (len tags) 0)
|
|
(list)
|
|
(list (str "tags: " (mdd-join ", " tags))))))))
|
|
|
|
(define
|
|
content/-frontmatter
|
|
(fn
|
|
(doc)
|
|
(let
|
|
((parts (content/-fm-parts doc)))
|
|
(if
|
|
(= (len parts) 0)
|
|
""
|
|
(str "---" mdd-nl (mdd-join mdd-nl parts) mdd-nl "---")))))
|
|
|
|
(define
|
|
content/markdown-doc
|
|
(fn
|
|
(doc)
|
|
(let
|
|
((fm (content/-frontmatter doc)))
|
|
(if
|
|
(= fm "")
|
|
(asMarkdown doc)
|
|
(str fm mdd-nl mdd-nl (asMarkdown doc))))))
|