Make great documentation goal 1.2, and plan the README's reorganisation and the nested-template gaps #33

Open
lilleman wants to merge 966 commits from worktree-todo-relative-dates-exact-counts into main
2 changed files with 9 additions and 9 deletions
Showing only changes of commit bad15a5bdb - Show all commits
+6 -6
View File
@@ -382,26 +382,26 @@ type op struct {
type formatOps struct {
ops []op
grow int
held map[string]heldName
held map[string]firstReach
heldLocal bool // some held name is not a reference path, so expand makes a hold
}
// heldName is how a format first reaches a held name: the reader holding it, for
// firstReach is how a format first reaches a held name: the reader holding it, for
// error messages, and the first path starting from it, "" where none does.
type heldName struct {
type firstReach struct {
holder string
path string
}
func (c *formatOps) holdName(a arm, label string) {
if c.held == nil {
c.held = map[string]heldName{}
c.held = map[string]firstReach{}
}
if !isRef(a.head) || len(a.tail) == 0 {
c.heldLocal = true
}
h, named := c.held[a.head]
if !named {
h, seen := c.held[a.head]
if !seen {
h.holder = label
}
if len(a.tail) > 0 && h.path == "" {
+3 -3
View File
@@ -71,14 +71,14 @@ func checkNameHeld(t *template, name string, readers []reader) error {
if len(held) == 0 {
return nil // a fixed head holds nothing to reach
}
reader := t.compiled.held[name].path
path := t.compiled.held[name].path
seen := map[node]bool{}
for _, e := range renderEdges(t) {
if e.read.head == name || !renders(e.to, held, seen) {
continue
}
if reader != "" {
return fmt.Errorf("%s renders %q, which {%s} reads a path into; name the fields you want instead", e.reached(), name, reader)
if path != "" {
return fmt.Errorf("%s renders %q, which {%s} reads a path into; name the fields you want instead", e.reached(), name, path)
}
return fmt.Errorf("%s renders %q, which a {%s()} also reads; reach it one way so it is drawn once", e.reached(), name, operandReader(t, name))
}