MCPcopy Create free account
hub / github.com/drone/envsubst / parseAny

Method parseAny

parse/parse.go:50–86  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

48}
49
50func (t *Tree) parseAny() (Node, error) {
51 t.scanner.accept = acceptRune
52 t.scanner.mode = scanIdent | scanLbrack | scanEscape
53
54 switch t.scanner.scan() {
55 case tokenIdent:
56 left := newTextNode(
57 t.scanner.string(),
58 )
59 right, err := t.parseAny()
60 switch {
61 case err != nil:
62 return nil, err
63 case right == empty:
64 return left, nil
65 }
66 return newListNode(left, right), nil
67 case tokenEOF:
68 return empty, nil
69 case tokenLbrack:
70 left, err := t.parseFunc()
71 if err != nil {
72 return nil, err
73 }
74
75 right, err := t.parseAny()
76 switch {
77 case err != nil:
78 return nil, err
79 case right == empty:
80 return left, nil
81 }
82 return newListNode(left, right), nil
83 }
84
85 return nil, ErrBadSubstitution
86}
87
88func (t *Tree) parseFunc() (Node, error) {
89 switch t.scanner.peek() {

Callers 1

ParseMethod · 0.95

Calls 5

parseFuncMethod · 0.95
newTextNodeFunction · 0.85
newListNodeFunction · 0.85
scanMethod · 0.80
stringMethod · 0.80

Tested by

no test coverage detected