def serialize.element

gralha-xml-doc@0.1.0.1 · xml.bend:441

import gralha-xml-doc@0.1.0.1/xml.bend as Xml
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U

441def serialize.element(+n: String, as: List<&2, Attr>, kids: List<&2, Element>, txt: String, +acc: String,
442  children: List<&2, Element> -> String -> String) -> String:
443  +isDocument = U.string.equal(n, "#document")
444  +isText = U.string.equal(n, "#text")
445  +open = U.branch(String, isDocument || isText, _ => acc,
446    _ => SCon{Chr{62}, serialize.attrs.rev(as, U.rev(n, SCon{Chr{60}, acc}))})
447  +body = children(U.choose(List<&2, Element>, isText, Nil{}, kids))(U.choose(String, isDocument, open, escape.rev(txt, open)))
448  U.branch(String, isDocument || isText, _ => body, _ => SCon{Chr{62}, U.rev(n, SCon{Chr{47}, SCon{Chr{60}, body}})})
449
450@unsafe

Uses (12)

Used by (1)