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

Method parseFunc

parse/parse.go:88–128  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

86}
87
88func (t *Tree) parseFunc() (Node, error) {
89 switch t.scanner.peek() {
90 case '#':
91 return t.parseLenFunc()
92 }
93
94 var name string
95 t.scanner.accept = acceptIdent
96 t.scanner.mode = scanIdent
97
98 switch t.scanner.scan() {
99 case tokenIdent:
100 name = t.scanner.string()
101 default:
102 return nil, ErrParseVariableName
103 }
104
105 switch t.scanner.peek() {
106 case ':':
107 return t.parseDefaultOrSubstr(name)
108 case '=':
109 return t.parseDefaultFunc(name)
110 case ',', '^':
111 return t.parseCasingFunc(name)
112 case '/':
113 return t.parseReplaceFunc(name)
114 case '#':
115 return t.parseRemoveFunc(name, acceptHashFunc)
116 case '%':
117 return t.parseRemoveFunc(name, acceptPercentFunc)
118 }
119
120 t.scanner.accept = acceptIdent
121 t.scanner.mode = scanRbrack
122 switch t.scanner.scan() {
123 case tokenRbrack:
124 return newFuncNode(name), nil
125 default:
126 return nil, ErrMissingClosingBrace
127 }
128}
129
130// parse a substitution function parameter.
131func (t *Tree) parseParam(accept acceptFunc, mode byte) (Node, error) {

Callers 2

parseAnyMethod · 0.95
parseParamMethod · 0.95

Calls 10

parseLenFuncMethod · 0.95
parseDefaultOrSubstrMethod · 0.95
parseDefaultFuncMethod · 0.95
parseCasingFuncMethod · 0.95
parseReplaceFuncMethod · 0.95
parseRemoveFuncMethod · 0.95
newFuncNodeFunction · 0.85
peekMethod · 0.80
scanMethod · 0.80
stringMethod · 0.80

Tested by

no test coverage detected