HS: as HTML (NodeList elements via outerHTML) + as Fragment (+4 tests)
hs-coerce HTML list case: use outerHTML for element items, not str. hs-coerce Fragment case: actually build a DocumentFragment — element items are appended directly; strings are parsed via a temp div. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1210,7 +1210,14 @@
|
||||
((= type-name "Array") (if (list? value) value (list value)))
|
||||
((= type-name "HTML")
|
||||
(cond
|
||||
((list? value) (join "" (map (fn (x) (str x)) value)))
|
||||
((list? value)
|
||||
(join
|
||||
""
|
||||
(map
|
||||
(fn
|
||||
(x)
|
||||
(if (hs-element? x) (host-get x "outerHTML") (str x)))
|
||||
value)))
|
||||
((hs-element? value) (host-get value "outerHTML"))
|
||||
(true (str value))))
|
||||
((= type-name "JSON")
|
||||
@@ -1261,7 +1268,25 @@
|
||||
((factor (pow 10 digits)))
|
||||
(str (/ (floor (+ (* num factor) 0.5)) factor))))))
|
||||
((= type-name "Selector") (str value))
|
||||
((= type-name "Fragment") value)
|
||||
((= type-name "Fragment")
|
||||
(let
|
||||
((frag (host-call (dom-document) "createDocumentFragment")))
|
||||
(do
|
||||
(for-each
|
||||
(fn
|
||||
(item)
|
||||
(if
|
||||
(hs-element? item)
|
||||
(dom-append frag item)
|
||||
(let
|
||||
((tmp (dom-create-element "div")))
|
||||
(do
|
||||
(dom-set-inner-html tmp (str item))
|
||||
(for-each
|
||||
(fn (k) (dom-append frag k))
|
||||
(host-get tmp "children"))))))
|
||||
(if (list? value) value (list value)))
|
||||
frag)))
|
||||
((= type-name "Values") (hs-as-values value))
|
||||
((= type-name "Keys")
|
||||
(if
|
||||
|
||||
Reference in New Issue
Block a user