def css.tree
gralha-css-style@0.1.0.1 · css.bend:451
import gralha-css-style@0.1.0.1/css.bend as Css
import Base
import gralha-text-scan@0.1.0.1/scan.bend as U
import gralha-xml-doc@0.1.0.1/xml.bend as XML
451def css.tree(+xs: List<&2, XML.Element>, +rules: List<&2, CSSRule>, +parents: List<&2, CSSContext>, +previous: List<&2, CSSContext>, +index: U32, +count: U32) -> List<&2, XML.Element>:
452 match xs:
453 case Nil{}: Nil{}
454 case Con{XML.Element{n, as, kids, txt}, rest}:
455 +tagname = n
456 +children = kids
457 +node = {XML.Element{tagname, as, children, txt} : XML.Element}
458 +context = {CSSContext{node, parents, previous, index, count} : CSSContext}
459 U.branch(List<&2, XML.Element>, U.string.equal(tagname, "#text"),
460 _ => Con{node, css.tree(rest, rules, parents, previous, index, count)},
461 _ => Con{XML.Element{tagname, css.styled(context, rules), css.tree(children, rules, Con{context, parents}, Nil{}, 1, css.element.count(children)), txt},
462 css.tree(rest, rules, parents, Con{context, previous}, U32.inc(index), count)})