diff --git a/CHANGELOG.md b/CHANGELOG.md index 1497e03..cdf85f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,9 +18,9 @@ replacement, and each removed path, column or flag. `parent`, a name repeating inside one parent row, a name spelling another row's key, a table named like a column of any table above it, a table whose format or cell references its own family, and, within one render and draw group, a path drawing a table another path selects a - row of, or two paths pinning different rows of one table. Two reads are held to one - draw only where both their rows can render together: a path read pins a row's - ancestors with it, while a table read whole draws a row and pins none. + row of, or two paths pinning different rows of one table. A read inside a cell is + weighed against another only where both rows can render together, which two rows of + one table, or rows under two different rows of an ancestor a path pinned, never can. - `New` refuses a root choice of templates sharing one format and one set of string fields, naming the rows TSV to write instead. - `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and diff --git a/README.md b/README.md index bdec463..502c753 100644 --- a/README.md +++ b/README.md @@ -1103,9 +1103,10 @@ the Development section below, and who ships a register the four above then draw a template beside the family under a selected row, is refused today; admitting it later is additive, since a refused spelling gains a meaning and no accepted one changes, so the door stays open for the address records the plan describes. -- **A table read into is pinned; a table rendered whole draws afresh.** A path into a - table pins its row for the render and group, as a reference path pins its level, - and a bare `{/city}` draws each time, as a bare reference does; so a bare table +- **A table read into is pinned; a table read whole draws afresh.** A path into a + table pins its row, and the ancestor rows it links to, for the render and group, as a + reference path pins its level, and a bare `{/city}` draws a row each time and pins no + row of its family, as a bare reference does; so a bare table beside a path into its family is refused like a bare reference beside a path into it. A bare table reference still counts as a read for a `drawGroup`, since the group is what draws it apart from the family's pins. @@ -1140,9 +1141,9 @@ the Development section below, and who ships a register the four above then draw - **The rows of a table are alternatives.** Only one row renders, so a cell in one row and a cell in another never meet, and each may select its own row of another table; the cells of one row, and whatever they reach, do meet, and so does the - format beside them. The rule the fence applies is that two reads meet unless they - sit in two rows of one table, or in rows that never render together: a path read - pins a row's ancestors with it, while a table read whole draws a row and pins none. A + format beside them. The rule the fence applies is that two reads meet unless they sit + in rows that never render together: two rows of one table, or rows under two different + rows of an ancestor a path pinned. A choice's items get no such treatment yet: two items selecting different rows are still refused. - **A table never reaches its own family, by any route.** A `repeat` iteration and a diff --git a/todo.md b/todo.md index f42d777..a49dbf9 100644 --- a/todo.md +++ b/todo.md @@ -153,10 +153,22 @@ by a `data-import/` script, as README goal 12 asks. ### Library and CLI -- Hold two whole reads of one table to one row, or refuse the pair: `{/region}|{/region}` - draws a row for each read, so cells of two rows render together while the fence counts - them alternatives and compares neither — a bare `{/addr}` in one row beside - `{/addr.city}` in another is the overlap it refuses everywhere else. +- Refuse two whole reads of one table family in one render, which goal 5 promises is a + load error: `{/sel}|{/sel}` panics out of `Fake` with "a fence should have refused this + at New" where the two draws land on rows whose cells select different rows of another + table, and `{/geo.SE.locality}|{/geo.SE.municipality}` renders a locality outside the + municipality beside it. Each read draws its own row, so cells of two rows render + together, where the fence counts them alternatives and compares neither. +- Name the cell a refused read sits in: where both reads come from TSV cells the overlap + error says `{area} with {/addr} renders a level that {where} with {/addr.city} reads a + path into`, naming neither table, row nor column, so the author greps a register-sized + file — and "name the fields you want instead" rewrites a cell that is not the one to fix. +- Stop the family fence naming a rewrite that cannot work: where the drawn table's rows + select more than one row of the family, every `write {/terr[NO].name}` it offers fails + the same way, and only the `drawGroup` it also names is left. +- Spell a table one way in an error: `family.go` names `drawn.category` in one message and + `t.path` in the next, so one table is `territory` and `misc.territory`, and the short + spelling names no file where two folders hold that name. - Name a spelling that works when a row selector misses: `misc.protocol[tcp]`, `misc.httpmethod[get]` and `misc.territory[se]` all answer "no row … has key or name" and stop there, where a case-insensitive match could name the row that exists, and a @@ -172,6 +184,10 @@ by a `data-import/` script, as README goal 12 asks. ### Open questions to settle +- Decide whether the README's Audience names the author who writes categories under + `--data-path`: the four personas listed consume the shipped set and the contributor + ships a register upstream, while "Your own data" is a README section, `-d` is a + first-class flag, and every load error the draw fences raise lands on that author. - Decide whether `data/misc`'s 33 flat files gain a level before v1.0.0: a folder is a path segment, so `misc/net/tld` is a rename a consumer pays for, and goal 13 promises the directory keeps growing.