diff --git a/AGENTS.md b/AGENTS.md index 1a48cad..3600a92 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -113,4 +113,4 @@ In [docs/decisions.md](docs/decisions.md): - A name lives in the category binding it, or in the repeat binding it, and is drawn on its first read - comprehension floor: every dimension and the overall at 7.0 or above; item 5 scores the restructure, which ships unscored: every `{…}` drawing afresh, the moves into `internal/`, and items 101, 102 and 104 to 106 - The template engine stays the root package until item 107; what reads no engine type sits in `internal/`, and items 101 and 102 move a table's rows there -- Goal 5.1 counts `{{`, `}}` and a lone `}` as template syntax, so they are not text printed as written +- Goal 5.1's `{…}` covers `{{`, `}}` and a lone `}`, so the goal names no escape diff --git a/docs/decisions.md b/docs/decisions.md index 4c03411..b8ebbfb 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -842,10 +842,10 @@ package under `internal/`, behind the import list `imports_test.go` checks. A table's rows stop reading any engine type once items 101 and 102 remove those reads; item 102 then moves them into `internal/rows` and adds it to that list. Valid until `todo.md` item 107 moves the engine. -## Goal 5.1 counts `{{`, `}}` and a lone `}` as template syntax, so they are not text printed as written +## Goal 5.1's `{…}` covers `{{`, `}}` and a lone `}`, so the goal names no escape -2026-10-05, Lilleman auf Larv. Serves goal 5.1. Goal 5.1 says everything outside `{…}` prints +2026-10-05, Lilleman auf Larv. Serves goal 5.1, which says everything outside `{…}` prints exactly as written, yet `{{` prints `{`, `}}` prints `}`, and a lone `}` is a load error naming `}}`, as the README's Format string section states. The maintainer ruled the escape implicit in the -goal: the braces belong to the `{…}` syntax, so the goal names no exception and a lone `}` +goal: doubled braces and a lone `}` belong to the `{…}` syntax, so the goal names no exception and a lone `}` stays an error. Valid while a template escapes a brace by doubling it. diff --git a/todo.md b/todo.md index 9e98ad7..bd559a4 100644 --- a/todo.md +++ b/todo.md @@ -6,7 +6,7 @@ `Bar = 9` -`Next ID = 114` +`Next ID = 115` | Goal | W | |---|---| @@ -108,6 +108,7 @@ | 27 | 0.2.0 | | **Merge `en_US.ip` and `sv_SE.ip`, today byte-identical, into one `misc.ip`.** | 3 | 2 | 4 | 6 | 5.7 | 14.1 | | 22 | 0.2.0 | | **Give `url` and `email` a path that draws only domains nobody can register, keeping the wide set as the default.** | 3 | 4 | 7 | 8 | 16 | 14.0 | | 46 | 0.2.0 | | **Report the same error every load for a table with two bad options, and for a folder with two unnamed rows files.** | 2 | 2 | 3 | 7 | 6, 10 | 14.0 | +| 114 | 0.2.0 | question | **Settle whether goal 7.2's "no escaping" holds for a first template with a literal brace, which must write `{{` or `}}`.** | 1 | 1 | 4 | 5 | 7.2 | 13.8 | | 107 | 0.2.0 | decision | **Move the template engine into `internal/`, leaving the root the public API and its options.** | 6 | 9 | 3 | 8 | 3.2, 3.4 | 12.2 | | 112 | 0.2.0 | | **Check a calc's field operands where its template links, beside its name operands, once item 36 reports every mistake at once.** | 2 | 2 | 1 | 6 | 3.2 | 10.3 | | 94 | 0.2.0 | | **Refuse a name whose every read passes one deeper level, naming the binding of that level: `{place as p}{p.geo.town.name} {p.geo.town.zip}` is `{place.geo.town as t}{t.name} {t.zip}`.** | 3 | 3 | 3 | 5 | 5.7 | 10.2 | @@ -382,6 +383,10 @@ Require the path step to reach a sibling category. `readTableOptions` in `table.go` and `walkDir` in `internal/datafiles` return on the first in Go's map order. +### 114. Settle whether goal 7.2's "no escaping" holds for a first template with a literal brace, which must write `{{` or `}}`. + +The decision "Goal 5.1's `{…}` covers `{{`, `}}` and a lone `}`, so the goal names no escape" keeps a lone `}` a load error. Goal 7.2 promises a first template needs no escaping; the maintainer decides whether that means shell quoting only, or also the doubled brace. + ### 107. Move the template engine into `internal/`, leaving the root the public API and its options. Needs item 5. The engine returns column values and the root builds `Record`. Revises the decision "The template engine stays the root package until item 107; what reads no engine type sits in `internal/`, and items 101 and 102 move a table's rows there", and, if the vocabulary moves, "The vocabulary sits below `doc.go`'s package clause, not in the package doc".