def resource.search

gralha-svg-render@0.1.0.1 · svg.bend:2053

import gralha-svg-render@0.1.0.1/svg.bend as Svg
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
import gralha-css-style@0.1.0.1/css.bend as CSS

2053# A lookup runs rarely, so it branches through lambdas over copies.
2054def resource.search(xs: List<&2, XML.Element>, +id: String, +chain: List<&2, List<&2, XML.Attr>>) -> Maybe<&2, XML.Element>:
2055  match xs:
2056    case Nil{}: None{}
2057    case Con{XML.Element{n, as, kids, txt}, rest}:
2058      +nn = n
2059      +attrs = as
2060      +kk = kids
2061      +tt = txt
2062      U.branch(Maybe<&2, XML.Element>, U.string.equal(XML.attr.get(attrs, "id", ""), id),
2063        _ => resource.found(nn, resource.resolve(chain, CSS.properties(attrs)), kk, tt),
2064        _ => XML.element.prefer(U.branch(Maybe<&2, XML.Element>, U.string.equal(nn, "#svg-image"), _ => None{}, _ => resource.search(kk, id, Con{attrs, chain})),
2065          resource.search(rest, id, chain)))

Uses (12)

Used by (1)