Draw every path through drawSteps over its compiled steps, deleting pathDraw and pathProbe

This commit is contained in:
2026-09-30 20:07:10 +02:00
committed by Lillem4n
parent d5d1e86b1c
commit 96d9e2ab24
5 changed files with 98 additions and 114 deletions
+5 -3
View File
@@ -40,10 +40,12 @@ func (f *Generator) Fake(path string) (string, error) {
// selects or draws.
func descend(s *generatorState, root node, segments []string, sc renderScope) (node, error) {
// docs/decisions.md#a-path-is-walked-once-without-drawing-before-it-is-walked-for-real
if _, err := (&pathProbe{}).walk(root, segments); err != nil {
var buf [16]pathStep
steps, err := probePath(root, segments, buf[:0])
if err != nil {
return nil, err
}
return drawPath(root, segments, "", &pathDraw{s: s, pins: &sc.groupDraws().pins}), nil
return drawSteps(s, root, steps, &sc.groupDraws().pins, nil, nil), nil
}
// renderOnce renders n as one render, over draws of its own.
@@ -188,7 +190,7 @@ func readMemo(s *generatorState, t *template, memo *drawMemo, pins *pinSet, sc r
if r, done := memo.value[a.path]; done {
return r
}
leaf := drawPath(t.head(a.head), a.tail, a.head, &pathDraw{s: s, memo: memo, pins: pins, a: &a})
leaf := drawSteps(s, t.head(a.head), a.steps, pins, memo, a.levels)
if pins != nil {
sc = sc.at(leaf, pins)
}