Accept one spelling per draw, and reject a path into a repeating level

This commit is contained in:
M
2026-08-30 20:38:52 +02:00
committed by lilleman-tw
parent 97ecbe208f
commit f7165274c7
5 changed files with 81 additions and 26 deletions
+13 -1
View File
@@ -347,7 +347,19 @@ renders e.g. `Kungsgatan 35` / `176 99 Stockholm`, never a Stockholm postal code
beside Tranås. Each row carries its own `weight`, so how often a place appears is data
too. The rule holds both ways: two tails of one head come from the same row, and
one path read twice reads one value (`{p.first} … {p.first}@…` gives one name).
A bare `{place}` in such a format reads that same draw.
**One draw, one spelling.** A format may not both *render* a level and *read a
path into* it — `{p}` beside `{p.first}`, or `{place}` beside `{place.locality}`.
Rendering a level expands it afresh while a path reads the level's held draw, so
the two would disagree; naming the fields you want is the one spelling that
always agrees, and the other is a load error:
```
token {p} renders a level that {p.first} reads a path into; name the fields you want instead
```
For the same reason a path may not read into a level carrying a `repeat`: it
reads one draw, so the repeat could never apply.
A path is held at **every level it passes through**, not just the first, so the
facts can nest as deeply as they belong: