diff --git a/README.md b/README.md index 3a455f3..07f05b1 100644 --- a/README.md +++ b/README.md @@ -908,10 +908,8 @@ Where the project is heading; the sections before Audience document what ships t 5. `[SE]` selects one row of a table, and means that row wherever you write it. 6. If two people could read a template differently, loading it fails, and the error shows how to write each meaning. - 7. Each result has one obvious way to write it. A spelling with a part that doesn't - change anything — a default written out, an item listed twice in a choice, a - wrapper around what could stand alone — fails to load, and the error shows the - spelling to write instead. + 7. A spelling that suggests you meant something else — such as a range with nothing + to draw, `int(5,5)` — fails to load, and the error shows what to write. 8. When a clearer name turns up, it replaces the old one, even if that needs a new major version. 9. Everything fejkdata renders is written as a template: on the command line, in a diff --git a/docs/decisions.md b/docs/decisions.md index 1d2818e..35edf09 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -324,10 +324,10 @@ its names: one tag may bind `{/person as p}{p.first}` and another read `{p.sex}` while a path tag draws afresh as `{/path}` does (goal 5.2). A tag binding a name only an embedding type reads is refused on the embedded type alone, as -any name read once is, so the embedder binds it in a tag of its own. A tagged field that +any name nothing reads is, so the embedder binds it in a tag of its own. A tagged field that another field hides is refused, not dropped. A named -struct field is another entity and a record of its own. `fake:"-"` leaves a struct -field, embedded or named, unfilled, so no name may be `-`; a pointer back to a struct +struct field is another entity and a record of its own. `fake:"-"` leaves any struct +field unfilled, so no name may be `-`; a pointer back to a struct already being filled is left alone, since filling it would never end. `New` cannot see a caller's types, so the first `FakeStruct` for a type compiles its tags and the answer, error included, is kept per type: a test's first call is its load, and no `NewStruct` diff --git a/todo.md b/todo.md index 47d6144..8adb13c 100644 --- a/todo.md +++ b/todo.md @@ -245,8 +245,8 @@ Shape: T = table, t = template, c = choice. Goal 5.9. Today a path is a second spelling of the template that reads it; afterwards only the template remains. -- A lone reference, a template of one reference token and nothing else, is what it references, as a record column reading one reference already is: `FakeRecord("{/users}")` returns the columns of `users`. The CLI's `loneReference` then goes, and `--format sql` takes its default `--table` from the library's parse of the reference. -- `Fake` and `FakeRecord` take a template. `FakeTemplate` folds into `Fake`, `FakeRecordTemplate` into `FakeRecord`, and `IsTemplate` goes, with `grammar.IsTemplate` and the lone-reference refusal. +- A lone reference, a template of one reference token and nothing else, is what it references, as a record column reading one reference already is: `FakeRecord("{/users}")` returns the columns of `users`. The CLI's `loneReference` and the `isPath` check it copies from the token grammar then go, and `--format sql` takes its default `--table` from the library's parse of the reference. +- `Fake` and `FakeRecord` take a template. `FakeTemplate` folds into `Fake`, `FakeRecordTemplate` into `FakeRecord`, and `IsTemplate` goes, with `grammar.IsTemplate`. - `Fake` of a lone reference costs what `Fake` of its path costs today, and the allocation gate holds a case for it. - `List` and `--list` give each entry as the template that renders it, `{/sv_SE.person}`. - Text that is not a JSON value and holds no `{…}` prints as written (goal 5.1), in a string field's struct tag and `Fake` alike, as stdin's text does in the CLI: `Fake("sv_SE.person")` returns `sv_SE.person`. `CHANGELOG.md` says that a path with no `{…}` prints as its text. A struct tag's `-` still skips its field.