def marker.subpaths
gralha-svg-render@0.1.0.1 · svg.bend:944
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
944def marker.subpaths(+xs: List<&2, MarkerSegment>, +start: Point, +acc: List<&2, MarkerSegment>, +have: Bool, +done: List<&2, MarkerSubpath>) -> List<&2, MarkerSubpath>:
945 match xs:
946 case Nil{}: marker.subpaths.reverse(U.choose(List<&2, MarkerSubpath>, have, Con{MarkerSubpath{start, marker.segments.reverse(acc, Nil{}), False{}}, done}, done), Nil{})
947 case Con{segment, rest}:
948 MarkerSegment{p, q, outgoing, incoming, kind} = segment
949 +seg = {MarkerSegment{p, q, outgoing, incoming, kind} : MarkerSegment}
950 U.branch(List<&2, MarkerSubpath>, U32.is_eq(kind, 1),
951 _ => marker.subpaths(rest, q, Nil{}, True{}, U.choose(List<&2, MarkerSubpath>, have, Con{MarkerSubpath{start, marker.segments.reverse(acc, Nil{}), False{}}, done}, done)),
952 _ => U.branch(List<&2, MarkerSubpath>, U32.is_eq(kind, 2),
953 _ => marker.subpaths(rest, q, Nil{}, False{}, Con{MarkerSubpath{U.choose(Point, have, start, p), marker.segments.reverse(Con{seg, acc}, Nil{}), True{}}, done}),
954 _ => marker.subpaths(rest, U.choose(Point, have, start, p), Con{seg, acc}, True{}, done)))