Commit Graph

51 Commits

Author SHA1 Message Date
lilleman 9baa77c752 Drop the CLI's no-data hint, keep the number underflow rule in grammar/number.go, and name the JSON a template may be 2026-10-08 12:37:59 +02:00
lilleman 357a2a276d Print the CSV header at -n 0, refuse --separator with a record format, refuse a date field in time(), read a bare number template as a format string, and say when no data is loaded 2026-10-08 12:37:59 +02:00
lilleman f964816830 Refuse a rows weight too close to 0 to tell from it, by the rule a JSON option uses 2026-10-08 12:37:59 +02:00
lilleman 68c4313b7a Test that a choice item picks anew on each draw, counting only renders drawing it twice, and that a rows weight too close to 0 is refused 2026-10-08 12:37:59 +02:00
lilleman 31c2f2651d Refuse an option too close to 0 to tell from it, pick a template's field position by a switch, and drop Weighted's unreachable fallback 2026-10-08 12:37:59 +02:00
lilleman 71c5039f04 Let a struct field's Go type type a bare number or boolean in its tag, and offer only a datatype that holds a refused column's number 2026-10-08 12:37:59 +02:00
lilleman 8f1cd76bf1 Render blank stdin, read a category's own fields as fresh draws, refuse a bare number or boolean in a record column, and refuse a one-item choice of weight 0 2026-10-08 12:37:59 +02:00
lilleman dd09d7ae82 Test blank stdin rendering, a category reading itself as a fresh draw, a bare number or boolean refused in a record column, a one-item choice of weight 0 refused, and a hidden rows file read 2026-10-08 12:37:59 +02:00
lilleman 97e72988b1 Refuse a calc over digits(0) or a repeat of 0, name an option's wrong kind as JSON does, type the name scope kinds, and compile only from a jsonvalue.Value 2026-10-08 12:37:59 +02:00
lilleman f036f859d6 Load a generator with no data, a repeat or count of 0, and a name a choice's item binds for that item's own reads 2026-10-08 12:37:59 +02:00
lilleman 825030b80d Trim the tests that only pinned a load, or pinned one behaviour twice, into render comparisons 2026-10-08 12:37:59 +02:00
lilleman ee236d7955 Load whatever is well-formed and means one thing: ignore a part with no effect, print a constant sample, render any JSON value, draw no weight-0 item, and let a name, a rows file, a struct or a CLI flag go unused 2026-10-08 12:37:59 +02:00
lilleman 052a52fc7a Test that what is well-formed and means one thing loads: ignored parts, constant samples, any JSON value, weight 0, an unread name, a stray rows file, a tagless struct and flags with no effect 2026-10-08 12:37:59 +02:00
lilleman 6b26b18104 Let a declared datatype win over a column read, count a repeat as written, refuse null alone on stdin and a second leading slash, and hand NewTemplate stdin as sent 2026-10-08 12:37:59 +02:00
lilleman e63efe327f Load each spelling that only restated a shorter one, as that shorter form 2026-10-08 12:37:59 +02:00
lilleman 91b65e3ded Test that each spelling goal 5.7 no longer refuses loads as its shorter form 2026-10-08 12:37:59 +02:00
lilleman e5babf413d Answer architecture round 3, stability round 2, product-owner round 2 and prose round 1: the CLI renders exactly the template on stdin and adds nothing, --separator defaults to empty, whitespace around JSON is dropped, a lone reference under --format allows one newline, a blank stdin is refused, an unexpected argument names the spelling to use, and the prose names one lone reference 2026-10-07 21:58:29 +02:00
lilleman ad599675d1 Answer prose round 2: top_streets says what it returns, and CheckIdentifier's doc opens with what it does 2026-10-07 02:27:24 +02:00
lilleman c2147d2282 Answer prose round 1 and product-owner round 1: CheckIdentifier's doc counts a bound name, FuncCall and the grammar doc say PathRead and identifiers, the Layout's list.go, name.go and data-import rows read on one pass, the locality row says a postort with no street is dropped, geo.py's docs name what they take, well_cased says what it drops, and item 61 names the next steps to share 2026-10-07 02:27:24 +02:00
lilleman fcec9c4a2a Rename grammar's NameRead to PathRead and CheckName to CheckIdentifier, so a name in the engine is only a bound name 2026-10-07 02:27:24 +02:00
lilleman 10dbd471fb Delete the doc lines the 2026-10-07 panel read as restating their code, and say what gatherFields' index is 2026-10-07 02:04:32 +02:00
lilleman 98bb73f096 Give scope, binding, link, pick and head one meaning each: renderEnv, nodeSet, pipeline, resolvedRef, resolveTemplates, drawItem and a read's start 2026-10-07 01:04:44 +02:00
lilleman 34a0fb3a18 Answer prose round 2: the selector's reserved quote named as opening a JSON value, and the List doc rewrapped 2026-10-05 22:10:04 +02:00
lilleman 54f68735df Answer prose round 1: true fixture and item 116 claims, plainer DrawIn, takeStep, Link and decision wording, and two comments deleted 2026-10-05 22:10:04 +02:00
lilleman 36329f1328 Answer architecture round 2: a keyed walk position, a plainer Above test, and docs naming the owner and the key-name refusal 2026-10-05 22:10:04 +02:00
lilleman 29a5314f60 Answer architecture round 1: rows.Options checked whole in internal/rows, Owner and ProveStepUp, neutral pin docs, one walk position, tests of internal/rows and Weighted, and a true README list of Fake's failures 2026-10-05 22:10:04 +02:00
lilleman 707cd6b203 Move a table's rows, links and pins into internal/rows, and walk every path through one per-step function, so Fake refuses a level carrying a repeat 2026-10-05 22:10:04 +02:00
lilleman 05d9fcd8c1 Test the character a selector cannot spell 2026-10-05 22:10:04 +02:00
lilleman c55b296385 Answer prose round 2: the maintainer's approval beside the list it covers, Facts and compileInto docs naming what they read, and "the folder that dir names" 2026-10-05 16:30:28 +02:00
lilleman 643efc8650 Answer prose round 1: the restructure in three named parts, Category.Folders and proven.Facts for one meaning per name, plainer builtinfunc and datafiles comments, and no false iban rationale 2026-10-05 16:30:28 +02:00
lilleman 4f484cd780 Answer architecture round 3, stability round 1 and product-owner round 1: CalcName and proven.OfCalc for one meaning per name, a lazy load placed where its lookup found it, DataType's constants typed under it, and cover printing the module's total 2026-10-05 16:30:28 +02:00
lilleman 679bd43c7c Answer architecture round 2: guard Noun's range, name calc once as builtinfunc.Calc, and place readTableOptions in item 46 2026-10-05 16:30:28 +02:00
lilleman a229ae90a2 Test Noun on a datatype no data writes, and check panics against invariant.Broken's phrase 2026-10-05 16:30:28 +02:00
lilleman dd2fe61b13 Answer architecture round 1: one invariant phrase in internal/invariant, held across every package, Source built by Dir and FS, coverage counted across packages, and file items 112 and 113 2026-10-05 16:30:28 +02:00
lilleman 835cdb57d4 Test every package's panics for the one invariant phrase, and a Source built from a directory 2026-10-05 16:30:28 +02:00
lilleman 818a9b56c2 Move the folder walk and the reading of a data tree's JSON and TSV files into internal/datafiles 2026-10-05 16:30:28 +02:00
lilleman 691f304096 Test a refused category and folder name with a name the grammar refuses 2026-10-05 16:30:28 +02:00
lilleman 3bb96ded91 Move the builtins, with their checksums, layouts and transforms, into internal/builtinfunc, and check calc's operands in the engine 2026-10-05 16:30:28 +02:00
lilleman 9357abb279 Move DataType into internal/datatype, aliased by the root, and what a proof knows of a value into internal/proven 2026-10-05 16:30:28 +02:00
lilleman 83e4daefdb Test internal/datafiles, internal/datatype, internal/proven and internal/builtinfunc, and allow the root to import them 2026-10-05 16:30:28 +02:00
lilleman 177dd4b50b Answer prose round 1: delete two false comments, plainer SplitPath, evalCalc and decision wording, a shorter comprehension floor title, and item 110 owes a changelog entry 2026-10-05 12:35:08 +02:00
lilleman 199cb577c5 Answer stability round 1: unexport the grammar's helpers the root never calls, and drop CheckName's note of its callers 2026-10-05 12:35:08 +02:00
lilleman 350514b60e Test a calc reading one operand twice 2026-10-05 12:35:08 +02:00
lilleman 6fd7da19e5 Answer architecture round 1: calls carry no operands in the grammar, ParseCalc returns its operands, one empty-segment check, sorted token kinds, and file items 110 and 111 2026-10-05 12:35:08 +02:00
lilleman 3479f9cf98 Test a calc's operand list, one empty-segment check, and an empty segment after a step up 2026-10-05 12:35:08 +02:00
lilleman c2f2e86735 Move how the template language is written into internal/grammar 2026-10-05 12:35:08 +02:00
lilleman 41292f9d89 Test internal/grammar, and allow the root to import it 2026-10-05 12:35:08 +02:00
lilleman 46895151c8 Answer prose round 1: plainer sentences in the two decisions, no provenance in items 108 and 109, and shorter comments in drawstate, render and format 2026-10-05 12:03:38 +02:00
lilleman 1d0fe9f555 Answer architecture round 1: read the module path from go.mod, keep the randomness behind State's methods, rename the field drawState and the counter Seq, and file items 108 and 109 2026-10-05 12:03:38 +02:00
lilleman 2d9c315e75 Move the seeded randomness and the {seq()} counters into internal/drawstate 2026-10-05 12:03:38 +02:00