def dots.go

bend-net-url@0.4.0.0 · url.bend:416

import bend-net-url@0.4.0.0/url.bend as Url
import Base

416# stack is reversed; trail: the last segment was "." or "..", so a "/" ends the path.
417def dots.go(segs: List<&2, String>, stack: List<&2, String>, trail: Bool) -> String:
418  match segs:
419    case Nil{}:
420      +out = dots.join(stack, "")
421      Bool.pick(String, Bool.and(trail, Bool.not(String.is_empty(out))), out ++ "/", Bool.pick(String, String.is_empty(out), "/", out))
422    case Con{+seg, t}:
423      +dot = String.eq(seg, ".")
424      +up = String.eq(seg, "..")
425      dots.go(t, dots.push(seg, stack, dot, up), Bool.or(dot, up))

Uses (12)

Used by (1)