Gather the pick key's load and render sides in pick.go, and name each thing for what it is
This commit is contained in:
@@ -62,43 +62,3 @@ func tablePaths(t *table, intoRepeats bool) []string {
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// sharedPaths is the sub-paths every item carries — the only ones a path may step
|
||||
// through a choice to reach. It intersects, bailing as soon as the set
|
||||
// is empty, which is immediate for a choice of plain strings.
|
||||
func sharedPaths(items []node, intoRepeats bool) map[string]bool {
|
||||
shared := subPaths(items[0], intoRepeats)
|
||||
for _, it := range items[1:] {
|
||||
if len(shared) == 0 {
|
||||
return nil
|
||||
}
|
||||
next := subPaths(it, intoRepeats)
|
||||
for p := range shared {
|
||||
if !next[p] {
|
||||
delete(shared, p)
|
||||
}
|
||||
}
|
||||
}
|
||||
return shared
|
||||
}
|
||||
|
||||
// subPaths is paths(n, intoRepeats) as a set, without the empty path that means n itself.
|
||||
func subPaths(n node, intoRepeats bool) map[string]bool {
|
||||
out := map[string]bool{}
|
||||
for _, p := range paths(n, intoRepeats) {
|
||||
if p != "" {
|
||||
out[p] = true
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func join(prefix, name string) string {
|
||||
switch {
|
||||
case prefix == "":
|
||||
return name
|
||||
case name == "":
|
||||
return prefix
|
||||
}
|
||||
return prefix + "." + name
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user