Bound the alternatives claim to one read, and point the grammar at it

This commit is contained in:
2026-09-21 16:56:19 +02:00
committed by Lillem4n
parent 1fdf23ecbd
commit ad7a62b67d
3 changed files with 26 additions and 21 deletions
+3 -3
View File
@@ -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 `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, 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 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. A read inside a cell is row of, or two paths pinning different rows of one table. Two cells are weighed
weighed against another only where both rows can render together, which two rows of against each other only where they can render together: not two rows of one table, and
one table, or rows under two different rows of an ancestor a path pinned, never can. not rows under different rows of a table a path pinned.
- `New` refuses a root choice of templates sharing one format and one set of string - `New` refuses a root choice of templates sharing one format and one set of string
fields, naming the rows TSV to write instead. fields, naming the rows TSV to write instead.
- `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and - `misc.territory`, `misc.currency`, `misc.language`, `misc.httpstatus` and
+13 -13
View File
@@ -546,7 +546,8 @@ to, a chain of parents that closes, a table named like a column of any table abo
it, and a cell or format of a table that references a table of its own family, through it, and a cell or format of a table that references a table of its own family, through
any template, a `repeat` or a `drawGroup` included, since a row rendered whole would any template, a `repeat` or a `drawGroup` included, since a row rendered whole would
draw the family apart from itself: read the family from a template beside it, or add draw the family apart from itself: read the family from a template beside it, or add
the value as a column. the value as a column. Which reads a render must reconcile, a cell's included, is
under [Decisions](#decisions).
### Options and fields ### Options and fields
@@ -1106,10 +1107,10 @@ the Development section below, and who ships a register the four above then draw
- **A table read into is pinned; a table read whole draws afresh.** A path into a - **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 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 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 row of its family, as a bare reference does; so a bare table beside a path into its
beside a path into its family is refused like a bare reference beside a path into family is refused like a bare reference beside a path into it. A bare table reference
it. A bare table reference still counts as a read for a `drawGroup`, since the group still counts as a read for a `drawGroup`, since the group is what draws it apart from
is what draws it apart from the family's pins. the family's pins.
- **Every reference path into one family selects the same rows, per render and - **Every reference path into one family selects the same rows, per render and
group.** A selector pins rows for the render, and a read that draws freely before it group.** A selector pins rows for the render, and a read that draws freely before it
could pin a row the selector contradicts, so accepting both would make the result could pin a row the selector contradicts, so accepting both would make the result
@@ -1138,14 +1139,13 @@ the Development section below, and who ships a register the four above then draw
format and options, at the cost of holding the rows twice, which is what a format and options, at the cost of holding the rows twice, which is what a
category over a register with two natural formats asks for; a TSV nothing names category over a register with two natural formats asks for; a TSV nothing names
stays a load error, since that one is a file forgotten rather than shared. stays a load error, since that one is a file forgotten rather than shared.
- **The rows of a table are alternatives.** Only one row renders, so a cell in one - **The rows of a table are alternatives.** Only one row renders per read, so within one
row and a cell in another never meet, and each may select its own row of another read a cell in one row and a cell in another never meet, and each may select its own
table; the cells of one row, and whatever they reach, do meet, and so does the row of another table; the cells of one row, and whatever they reach, do meet, and so
format beside them. The rule the fence applies is that two reads meet unless they sit does the format beside them. The rule the fence applies is that two reads meet unless
in rows that never render together: two rows of one table, or rows under two different they sit in rows that never render together: rows falling under different rows of a
rows of an ancestor a path pinned. A table a path pinned, two rows of that table itself included. A choice's items get no
choice's items get no such treatment yet: two items selecting different rows such treatment yet: two items selecting different rows are still refused.
are still refused.
- **A table never reaches its own family, by any route.** A `repeat` iteration and a - **A table never reaches its own family, by any route.** A `repeat` iteration and a
`drawGroup` each draw apart on purpose, but a row that lists three localities from `drawGroup` each draw apart on purpose, but a row that lists three localities from
other regions is the output the family exists to prevent, so the own-family fence other regions is the output the family exists to prevent, so the own-family fence
+10 -5
View File
@@ -158,11 +158,13 @@ by a `data-import/` script, as README goal 12 asks.
at New" where the two draws land on rows whose cells select different rows of another 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 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 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. together, where the fence counts them alternatives and compares neither. Have the error
- Name the cell a refused read sits in: where both reads come from TSV cells the overlap name the path spelling that holds, `{/geo.SE.locality.name}|{/geo.SE.municipality.name}`,
error says `{area} with {/addr} renders a level that {where} with {/addr.city} reads a as the README's rule on a rejected spelling asks.
path into`, naming neither table, row nor column, so the author greps a register-sized - Name the row a refused read sits in: where both reads come from TSV cells the overlap
file — and "name the fields you want instead" rewrites a cell that is not the one to fix. error names the category and the two columns but no row, so the author greps a
register-sized file for the cell — 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 - 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 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. the same way, and only the `drawGroup` it also names is left.
@@ -184,6 +186,9 @@ by a `data-import/` script, as README goal 12 asks.
### Open questions to settle ### Open questions to settle
- Decide whether a goal 5 violation joins the comprehension gate's exception list, beside
a security fix and a dependency bump: the panic above waits behind the whole round at
5.9, and `{/geo.SE.locality}|{/geo.SE.municipality}` mispairs the shipped data meanwhile.
- Decide whether the README's Audience names the author who writes categories under - 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 `--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 ships a register upstream, while "Your own data" is a README section, `-d` is a