(root *templateFile, parent *parse.ListNode, index int, node parse.Node)
| 20 | } |
| 21 | |
| 22 | func 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 | |
| 68 | func processActionNode(root *templateFile, parent *parse.ListNode, index int, node parse.Node, funcName string) error { |
| 69 | actionNode := node.(*parse.ActionNode) |
no test coverage detected