From e4b37091e4a08915d0778aab116344db69993fbd Mon Sep 17 00:00:00 2001 From: M Date: Sat, 29 Aug 2026 14:57:36 +0200 Subject: [PATCH] Say that a path is held at every level --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index ac8f7d1..c38dce6 100644 --- a/README.md +++ b/README.md @@ -349,6 +349,17 @@ 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. +A path is held at **every level it passes through**, not just the first, so the +facts can nest as deeply as they belong: + +```json +{ "format": "{p.geo.town.name} {p.geo.town.zip}, {p.geo.region}", "p": [ … ] } +``` + +renders `Kiruna 98100, Norrbotten` — the town, the zip that covers it and the +region it sits in all come from one draw. Two paths part company exactly where +they diverge: `{p.a.v}` and `{p.b.v}` share the row and nothing below it. + The binding lasts for one expansion, so each `repeat` iteration draws again and a nested template keeps its own. A field no dotted token addresses is unaffected — `{word} {word}` still draws twice — and so are `{calc()}` operands, which read