host: SX-native HTML→SX converter (the radar migrator) + first-class HTML import
lib/host/htmlsx.sx — a pure-SX HTML → SX converter (char-level tokenizer + stack parser): host/html->sx turns a post's HTML into an (article …) tree that host/blog--decompose! consumes — img / p / figure+figcaption / iframe / headings / blockquote / lists, inline strong/em/a kept nested (decompose flattens to text), entities decoded to UTF-8, comments+doctype skipped. This replaces the one-off external Python converter used for the nt-live-encore import. import-post! now accepts a raw "html" field (converted via html->sx, serialized to sx_content, decomposed) alongside "sx_content" — so importing real Ghost HTML is first-class. Wired htmlsx.sx into conformance.sh + serve.sh module lists (loads in conformance AND live). New htmlsx suite 8/8 (text/entities/void/nested/figure/iframe/comments + an html→sx→decompose→ typed-cards round-trip); blog 197/197 (+ import-from-html test). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -835,6 +835,17 @@
|
||||
(host/blog-is-a? "imp-fig__body__b1" "card-embed")
|
||||
(get (host/blog-field-values-of "imp-fig__body__b1") "url")))
|
||||
(list true "the cap" "p.jpg" true "https://youtube.com/embed/xyz"))
|
||||
;; import accepts RAW HTML (converted by the pure-SX host/html->sx) — the first-class path,
|
||||
;; replacing the one-off external converter used for the nt-live-encore import.
|
||||
(host-bl-test "import-post! accepts raw \"html\" (html->sx) and decomposes it into typed cards"
|
||||
(begin
|
||||
(host/blog-import-post! {"slug" "html-imp" "title" "HI" "status" "published"
|
||||
"html" "<h2>Hi</h2><p>Some <strong>bold</strong> text.</p><img src=\"p.jpg\" alt=\"a\">"})
|
||||
(list (host/blog-is-a? "html-imp__body__b0" "card-heading")
|
||||
(host/blog-is-a? "html-imp__body__b1" "card-text")
|
||||
(get (host/blog-field-values-of "html-imp__body__b1") "text")
|
||||
(host/blog-is-a? "html-imp__body__b2" "card-image")))
|
||||
(list true true "Some bold text." true))
|
||||
;; -- block editor: structural edits to the post :body composition (step 6). --
|
||||
(host-bl-test "block-add! creates a card object + contains edge + appends a ref to the body"
|
||||
(begin
|
||||
|
||||
Reference in New Issue
Block a user