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

Method parseSubstrFunc

parse/parse.go:165–211  ·  view source on GitHub ↗

parses the ${param:offset} string function parses the ${param:offset:length} string function

(name string)

Source from the content-addressed store, hash-verified

163// parses the ${param:offset} string function
164// parses the ${param:offset:length} string function
165func (t *Tree) parseSubstrFunc(name string) (Node, error) {
166 node := new(FuncNode)
167 node.Param = name
168
169 t.scanner.accept = acceptOneColon
170 t.scanner.mode = scanIdent
171 switch t.scanner.scan() {
172 case tokenIdent:
173 node.Name = t.scanner.string()
174 default:
175 return nil, ErrBadSubstitution
176 }
177
178 // scan arg[1]
179 {
180 param, err := t.parseParam(rejectColonClose, scanIdent)
181 if err != nil {
182 return nil, err
183 }
184
185 // param.Value = t.scanner.string()
186 node.Args = append(node.Args, param)
187 }
188
189 // expect delimiter or close
190 t.scanner.accept = acceptColon
191 t.scanner.mode = scanIdent | scanRbrack
192 switch t.scanner.scan() {
193 case tokenRbrack:
194 return node, nil
195 case tokenIdent:
196 // no-op
197 default:
198 return nil, ErrBadSubstitution
199 }
200
201 // scan arg[2]
202 {
203 param, err := t.parseParam(acceptNotClosing, scanIdent)
204 if err != nil {
205 return nil, err
206 }
207 node.Args = append(node.Args, param)
208 }
209
210 return node, t.consumeRbrack()
211}
212
213// parses the ${param%word} string function
214// parses the ${param%%word} string function

Callers 1

parseDefaultOrSubstrMethod · 0.95

Calls 4

parseParamMethod · 0.95
consumeRbrackMethod · 0.95
scanMethod · 0.80
stringMethod · 0.80

Tested by

no test coverage detected