lilleman
d19c5d4719
Make renderEdges panic on a node kind it does not handle, and drop the done round item
2026-09-29 00:13:54 +02:00
lilleman
e257dc0e6e
Return link's and format compile's outputs as templateLink and formatOps, assigned once in linkTemplate
2026-09-28 23:55:22 +02:00
lilleman
54d933ecc2
Name renderScope.groupHold for what it returns, correct pathDraw's pins comment, and drop the done round item
2026-09-28 23:32:31 +02:00
lilleman
194f194f81
Split the expansion's hold from the group's, and read a table's row from where the table is entered
2026-09-28 23:32:31 +02:00
lilleman
affbb9ac6f
Give head, index, bound and draw one meaning each, name familyRoot, and type the token kinds
2026-09-28 12:06:03 +02:00
lilleman
306b88ef56
Compile every format at link
2026-09-28 03:23:27 +02:00
lilleman
e9bb89f044
Correct and trim the comments around the path walks
2026-09-28 00:55:48 +02:00
lilleman
68033bd42f
Name the path walks after their entry points, keep the probe allocation-free, and record why the walks are four loops
2026-09-28 00:55:48 +02:00
lilleman
94eb7aa81f
Split walkPath's four modes into walkers of their own, sharing how a path steps
2026-09-28 00:55:48 +02:00
lilleman
3b77ed6b06
Give a table's current row one owner, the pin set, and return a column's null from its read
2026-09-28 00:07:43 +02:00
lilleman
d6ac8ed9fd
Give check, children, column, columns, draw, drawn, fields, format, head, index, key, n, name, named, names, null, number, op, reads, record, root, row, t and whole one meaning each
2026-09-25 19:31:09 +02:00
lilleman
068e2b73ca
Rename drawAt.pinned to pins, the visit keys' rows to rowsKey and cellNode to cellTemplate, and file format_test.go's split
2026-09-25 17:35:26 +02:00
lilleman
c63b1c74dd
Make walkEvery the zero mode, and have drawPath's panic name the head its tail descends from
2026-09-25 08:19:02 +02:00
lilleman
5953c58224
Name pathWalk's modes, and draw a path only through drawPath once it is proved
2026-09-25 08:19:02 +02:00
lilleman
9cbd8841fe
Draw a walk's rows and variants through pathDraws, off the pin set and the walk's signature
2026-09-24 13:24:58 +02:00
lilleman
3927dc9fa5
Give render and the draw fences one pin set
2026-09-24 10:19:23 +02:00
lilleman
34c069a844
Move expandAnew beside renderOnce in holdset.go
2026-09-22 22:04:32 +02:00
lilleman
d0d9df5220
Name a fresh hold set's two spellings, eager and lazy
2026-09-22 22:04:32 +02:00
lilleman
41dbbd3fda
Say hold where the prose still said draws
2026-09-21 22:06:01 +02:00
lilleman
d128621fc1
Name a render's holds apart from the draw fence
2026-09-21 22:06:01 +02:00
lilleman
ce8ea550a3
Correct what the readers proved false, and lift the file map out of last place
Tests / vet + fmt + tests (pull_request) Successful in 1m26s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
Tests / vet + fmt + tests (push) Successful in 7s
Tests / Gitea release from CHANGELOG.md (push) Successful in 5s
2026-09-20 21:47:17 +02:00
lilleman
d8c348d07b
Treat a column's cells as alternatives in the family fence, probe a path before drawing, and record that two categories may name one TSV
Tests / vet + fmt + tests (pull_request) Successful in 1m6s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
2026-09-17 15:39:07 +02:00
lilleman
047237f361
Replay each path's selectors through the walk for the family fence, require a key for a name, refuse a name shadowing a key, a table reading its own family and an ancestor's column clash, add the row node and family.go, and pin eight rows inline
Tests / vet + fmt + tests (pull_request) Successful in 1m8s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
2026-09-17 12:54:24 +02:00
lilleman
f6b54c8ae6
Add the table node: rows TSV, key and name selection, linked tables drawn consistently, and the choice-of-rows fence
2026-09-17 12:28:46 +02:00
lilleman
d3f430bf53
Render a repeat iteration in no group, refuse a group that names nothing, key group names by category, and own reference overlap in one fence
Tests / vet + fmt + tests (pull_request) Successful in 1m6s
2026-09-15 23:31:48 +02:00
lilleman
5ed45cc55c
Rename the folder node type from group to folder, freeing group for the draw option
2026-09-15 23:25:39 +02:00
lilleman
246f99a319
One reference draw per render in both views: a repeat iteration draws anew, a group option draws apart, and one fence refuses what a render's draws cannot answer for
Tests / vet + fmt + tests (pull_request) Successful in 1m6s
2026-09-15 22:59:30 +02:00
lilleman
b4ebab5abf
Keep a read's null with its draw, share the lone-reference check, name a JSON-string item's object form again, prove each column once per pass, and read a record off template.record
Tests / vet + fmt + tests (pull_request) Successful in 1m3s
2026-09-15 20:42:13 +02:00
lilleman
94dc562c6c
Typed columns and null: a datatype option, null items, and a load check that every typed render parses
Tests / vet + fmt + tests (pull_request) Successful in 58s
2026-09-15 11:23:57 +02:00
lilleman
8cb8cf6334
Reject a record's top-level repeat, share one record fence between both entry points, and give the renderer one spelling
2026-09-04 08:40:58 +02:00
lilleman
d237c15d77
Pin bare-reference independence and tighten the shared-draw comments
Tests / vet + fmt + tests (pull_request) Successful in 1m3s
2026-09-03 23:29:10 +02:00
lilleman
6a8aa96b20
Quote SQL identifiers and share reference draws across record columns
Tests / vet + fmt + tests (pull_request) Successful in 1m2s
2026-09-03 23:12:45 +02:00
lilleman
44c91668f9
Give the inline pipeline its own file, and record the shape, padding and template-API decisions
Tests / vet + fmt + tests (pull_request) Successful in 55s
2026-09-03 20:37:44 +02:00
lilleman
80e8d72bb7
One fence sequence over a node scope, and inline templates reject the folder sigils
2026-09-03 20:34:42 +02:00
lilleman
873b7678ba
Address reviewer findings: reference hint, consumer-terms type errors, misuse exit code, immutability and parity docs
Tests / vet + fmt + tests (pull_request) Successful in 57s
2026-09-03 19:21:42 +02:00
lilleman
305d8f8edd
Address stability nits: doc grammar, scalar-JSON note, bracket-rule rationale
Tests / vet + fmt + tests (pull_request) Successful in 56s
2026-09-03 17:53:05 +02:00
lilleman
d8ece597c8
Reserve brackets in names, add compile-once NewTemplate, let --repeat reuse it, record scope artifacts
Tests / vet + fmt + tests (pull_request) Failing after 16s
2026-09-03 17:48:20 +02:00
lilleman
3bc3e35045
Add FakeTemplate: compile an inline template and render it against the loaded tree
2026-09-03 17:27:54 +02:00
lilleman
bcbf044290
One path walk under checkPath, descend, readField, pathLeaves and coverPath; split the hold and the render graph into their own files
Tests / vet + fmt + tests (pull_request) Successful in 53s
2026-09-02 18:29:45 +02:00
lilleman
1bf5470c6f
Reference sigils follow the filesystem: / the root, . this folder, .. the folder above
Tests / vet + fmt + tests (pull_request) Successful in 53s
2026-09-02 18:26:02 +02:00
lilleman
31c2f12098
Hold a reference path like a sibling path; add the lowercase, uppercase and ascii transforms
2026-09-02 12:52:19 +02:00
lilleman
054f99c94f
One spelling per shape: reject a one-item choice, a repeated item and an inert object; reshape the data
2026-09-02 12:38:59 +02:00
lilleman
ff4b243148
Format text is literal; class runs are {digits(n)} {upper(n)} {lower(n)}; a string is a format
2026-09-02 12:37:21 +02:00
lilleman
f210c7a764
Embed the shipped data, load any fs.FS, New takes options, Fake is safe for concurrent use
2026-09-01 23:07:15 +02:00
lilleman
04b7b6a432
Rename the exported type to Generator and retire the faker wording
Tests / vet + fmt + tests (pull_request) Successful in 25s
2026-09-01 21:34:27 +02:00
lilleman
05dc042e49
Rename the project to fejkdata and record the fork source
Tests / vet + fmt + tests (pull_request) Failing after 6s
2026-09-01 20:24:03 +02:00
M
f949550515
One spelling for an unvalidated builtin arg, and say what the hold buys
...
float's prep still swallowed ParseFloat's error three lines from the atoi that
had just been changed to report one — two spellings of "parse an arg the check
already validated". atof reports it the same way.
The README paragraph said a reference reaching through an operand is caught,
which the narrowed fence no longer does and should not: it says what the hold
pins instead. Restored the why the trimmed comment in expand had carried.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00
M
7e073462c8
Document the fence a calc operand gets, and trim two comments
...
The one-spelling section described a calc operand only as a route that
renders a level, so a reader could not predict that {..cat.net} beside
{calc(net * 2, 2)} is now a load error with no path token in sight. It says
so, and says what an operand's draw covers and what it leaves free.
Dropped the paragraph in checkBoundLevelsHeld that restated its own first
line and the loop below it, and the escape-analysis note in expand.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00
M
909596ec2d
Trim comments that restate or argue
...
The operand order was written out in three places; it now lives at calcVars,
which fixes it, and the other two point there. Dropped the note explaining
why ')' is not reserved, which said what the set is not rather than what it
is, and shortened reservedList's doc to less than its body. The note on held
now states where it reaches instead of arguing against a design this repo no
longer contains.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 21:58:37 +02:00
M
9ed0d3bf55
Hold a calc operand's draw for the expansion
...
A field the format rendered and a calc read was drawn twice, so the operand
shown could differ from the operand computed — the same disagreement the
dotted-path rule already fences, in its plainest spelling. The README
carried it as a caveat, which is what a rule like this exists to remove.
A calc operand now joins the names an expansion holds, so it is drawn once
and every later read of it — the calc, and any bare token spelling it —
sees that draw. The hold stays per expansion: each repeat iteration and each
nested template draws its own.
expand reads a calc's operands before the call and hands over their values,
so a builtin takes (emitted, operands) rather than the sibling fields, and
the evaluator indexes that slice instead of walking the node tree. That is
what keeps the draws a local. Handing them to a builtin instead lets them
escape through an indirect call, which put two maps on the heap for every
held format, calc or not: BenchmarkBound went 56 B/5 allocs -> 744 B/10.
Measured against main: Bound 359 -> 349 ns at 56 B/5 allocs, unchanged;
Calc 416 -> 577 ns and one more alloc, which is what the correlation costs.
Validation is unchanged: t.bound still carries only the levels a dotted
token reads, so the overlap fences fence exactly what they did.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-31 13:33:05 +02:00