Make great documentation goal 1.2, and plan the README's reorganisation and the nested-template gaps #33
@@ -967,7 +967,7 @@ node.go the node model and JSON -> node compilation
|
|||||||
table.go tables: their options, format and cells, the link to the parent beside them, and how a path passes and draws a table
|
table.go tables: their options, format and cells, the link to the parent beside them, and how a path passes and draws a table
|
||||||
name.go names: {x as n} bindings, the scopes they live in, the reads they answer, and what each resolves to at load: its target, its reads and the keys they address
|
name.go names: {x as n} bindings, the scopes they live in, the reads they answer, and what each resolves to at load: its target, its reads and the keys they address
|
||||||
namefence.go the load fences over names
|
namefence.go the load fences over names
|
||||||
pick.go a render's named picks: the frames of the name scopes rendering, the memo a pick keeps, and the reads kept under it
|
pick.go a render's named picks: the frame of each name scope rendering, the memo a pick keeps, and the reads kept under it
|
||||||
env.go renderEnv: what a render reads names and rows through, the stack of frames it renders in, and the frames a read opens and finds
|
env.go renderEnv: what a render reads names and rows through, the stack of frames it renders in, and the frames a read opens and finds
|
||||||
path.go the dotted-path walks, and proving a path reaches a node
|
path.go the dotted-path walks, and proving a path reaches a node
|
||||||
render.go Fake, the recursive renderer (choices, format strings, expansions) and the reads its tokens make
|
render.go Fake, the recursive renderer (choices, format strings, expansions) and the reads its tokens make
|
||||||
@@ -981,7 +981,7 @@ resolve.go resolving templates against the assembled tree in steps, each ov
|
|||||||
graph.go the node graph: tree walks, containment and render edges, and the cycle and repeat fences
|
graph.go the node graph: tree walks, containment and render edges, and the cycle and repeat fences
|
||||||
sorted.go sortedNames: a map's keys, sorted
|
sorted.go sortedNames: a map's keys, sorted
|
||||||
calc.go the {calc()} operand checks: never a number, and a constant zero divisor
|
calc.go the {calc()} operand checks: never a number, and a constant zero divisor
|
||||||
datatype.go column datatypes: DataType, where datatype and null may sit, a column's datatype
|
datatype.go column datatypes: DataType, a template's declared datatype, a column's datatype
|
||||||
valueproof.go the value proof: what a typed column, calc operand or struct field holds, checked at load
|
valueproof.go the value proof: what a typed column, calc operand or struct field holds, checked at load
|
||||||
data.go the load path: the categories internal/datafiles hands over, compiled into one merged tree, and the load pipeline every entry point runs
|
data.go the load path: the categories internal/datafiles hands over, compiled into one merged tree, and the load pipeline every entry point runs
|
||||||
cmd/fejkdata/ the fejkdata CLI
|
cmd/fejkdata/ the fejkdata CLI
|
||||||
|
|||||||
@@ -170,9 +170,7 @@ def streets(segments, codes, localities, per_locality):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
p = geo.parser(__doc__, "SE")
|
a = geo.parser(__doc__, "SE", key_file={"help": "file holding the Trafikverket API key; TRAFIKVERKET_API_KEY otherwise"}).parse_args()
|
||||||
p.add_argument("--key-file", help="file holding the Trafikverket API key; TRAFIKVERKET_API_KEY otherwise")
|
|
||||||
a = p.parse_args()
|
|
||||||
key = Path(a.key_file).read_text().strip() if a.key_file else os.environ.get("TRAFIKVERKET_API_KEY")
|
key = Path(a.key_file).read_text().strip() if a.key_file else os.environ.get("TRAFIKVERKET_API_KEY")
|
||||||
if not key:
|
if not key:
|
||||||
sys.exit("set TRAFIKVERKET_API_KEY or pass --key-file")
|
sys.exit("set TRAFIKVERKET_API_KEY or pass --key-file")
|
||||||
|
|||||||
@@ -154,9 +154,7 @@ def streets(cache, counties, locality_of_zcta, per_locality):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
p = geo.parser(__doc__, "US")
|
a = geo.parser(__doc__, "US", min_population={"type": int, "default": 25000}).parse_args()
|
||||||
p.add_argument("--min-population", type=int, default=25000)
|
|
||||||
a = p.parse_args()
|
|
||||||
cache, out = geo.directories(a)
|
cache, out = geo.directories(a)
|
||||||
|
|
||||||
state_population = {r["STATE"]: r[ESTIMATE] for r in csv_rows(cache, STATES, "nst-est2025.csv") if r["SUMLEV"] == "040"}
|
state_population = {r["STATE"]: r[ESTIMATE] for r in csv_rows(cache, STATES, "nst-est2025.csv") if r["SUMLEV"] == "040"}
|
||||||
|
|||||||
+6
-6
@@ -1,4 +1,4 @@
|
|||||||
"""The steps every country's geo import takes."""
|
"""The steps a country's geo import may share with another's."""
|
||||||
import argparse
|
import argparse
|
||||||
import collections
|
import collections
|
||||||
import math
|
import math
|
||||||
@@ -9,12 +9,12 @@ DATA = Path(__file__).resolve().parent.parent / "data" / "geo"
|
|||||||
CACHE = Path(__file__).resolve().parent / "cache"
|
CACHE = Path(__file__).resolve().parent / "cache"
|
||||||
|
|
||||||
|
|
||||||
def parser(doc, country):
|
def parser(doc, country, **own):
|
||||||
"""The options every country's import takes; a script adds its own before parse_args."""
|
"""The options every country's import takes and the script's own, keyed by name with "_" for "-", in name order."""
|
||||||
|
options = {"cache": {"default": str(CACHE)}, "out": {"default": str(DATA / country)}, "streets_per_locality": {"type": int, "default": 10}, **own}
|
||||||
p = argparse.ArgumentParser(description=doc.splitlines()[0])
|
p = argparse.ArgumentParser(description=doc.splitlines()[0])
|
||||||
p.add_argument("--cache", default=str(CACHE))
|
for name in sorted(options):
|
||||||
p.add_argument("--out", default=str(DATA / country))
|
p.add_argument("--" + name.replace("_", "-"), **options[name])
|
||||||
p.add_argument("--streets-per-locality", type=int, default=10)
|
|
||||||
return p
|
return p
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -156,7 +156,7 @@ func disagreement(a *template, da DataType, b *template, db DataType) error {
|
|||||||
}
|
}
|
||||||
message, ok := disagreements[[2]itemKind{kindOf(c.fix), kindOf(c.other)}]
|
message, ok := disagreements[[2]itemKind{kindOf(c.fix), kindOf(c.other)}]
|
||||||
if !ok {
|
if !ok {
|
||||||
panic(invariant.Broken("two text items hold one datatype, so they never disagree"))
|
panic(invariant.Broken("disagreement has no message for item kinds %d and %d; two text items hold one datatype, so they never disagree", kindOf(c.fix), kindOf(c.other)))
|
||||||
}
|
}
|
||||||
return message(c)
|
return message(c)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ type tableRoute struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// route is how tail passes t. fromRow means the previous route stepped into t
|
// route is how tail passes t. fromRow means the previous route stepped into t
|
||||||
// from a row of an ancestor table, so t reads a row even where tail is empty; a
|
// from a row of a table linked to it, so t reads a row even where tail is empty; a
|
||||||
// table reached otherwise, with no selector and an empty tail, is left to a render's
|
// table reached otherwise, with no selector and an empty tail, is left to a render's
|
||||||
// own draw.
|
// own draw.
|
||||||
func (t *table) route(tail []string, fromRow bool) (tableRoute, error) {
|
func (t *table) route(tail []string, fromRow bool) (tableRoute, error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user