MCPcopy Index your code
hub / github.com/abiosoft/mold / processNode

Function processNode

process.go:22–66  ·  view source on GitHub ↗
(root *templateFile, parent *parse.ListNode, index int, node parse.Node)

Source from the content-addressed store, hash-verified

20}
21
22func processNode(root *templateFile, parent *parse.ListNode, index int, node parse.Node) (ts []nestedFile, err error) {
23 // appendResult appends the specified templates to the list of template names when there are no errors
24 appendResult := func(t []nestedFile, err1 error) {
25 if err1 != nil {
26 err = err1
27 }
28 if err == nil {
29 ts = append(ts, t...)
30 }
31 }
32
33 if a, ok := node.(*parse.ActionNode); ok {
34 if len(a.Pipe.Cmds) > 0 {
35 funcName, tname, _ := getActionArgs(a.Pipe.Cmds[0])
36 if err := processActionNode(root, parent, index, node, funcName); err != nil {
37 return ts, err
38 }
39 if funcName == partialFunc.String() && tname != "" {
40 ts = append(ts, nestedFile{name: tname, typ: partialFunc})
41 } else if funcName == renderFunc.String() && tname != "" {
42 ts = append(ts, nestedFile{name: tname, typ: renderFunc})
43 }
44 }
45 }
46
47 if w, ok := node.(*parse.WithNode); ok && w != nil {
48 appendResult(processNode(root, parent, index, w.List))
49 appendResult(processNode(root, parent, index, w.ElseList))
50 }
51 if l, ok := node.(*parse.ListNode); ok && l != nil {
52 for i, n := range l.Nodes {
53 appendResult(processNode(root, l, i, n))
54 }
55 }
56 if i, ok := node.(*parse.IfNode); ok && i != nil {
57 appendResult(processNode(root, parent, index, i.List))
58 appendResult(processNode(root, parent, index, i.ElseList))
59 }
60 if r, ok := node.(*parse.RangeNode); ok && r != nil {
61 appendResult(processNode(root, parent, index, r.List))
62 appendResult(processNode(root, parent, index, r.ElseList))
63 }
64
65 return ts, err
66}
67
68func processActionNode(root *templateFile, parent *parse.ListNode, index int, node parse.Node, funcName string) error {
69 actionNode := node.(*parse.ActionNode)

Callers 1

processTreeFunction · 0.85

Calls 3

getActionArgsFunction · 0.85
processActionNodeFunction · 0.85
StringMethod · 0.80

Tested by

no test coverage detected