parses the ${#param} string function
()
| 354 | |
| 355 | // parses the ${#param} string function |
| 356 | func (t *Tree) parseLenFunc() (Node, error) { |
| 357 | node := new(FuncNode) |
| 358 | |
| 359 | t.scanner.accept = acceptOneHash |
| 360 | t.scanner.mode = scanIdent |
| 361 | switch t.scanner.scan() { |
| 362 | case tokenIdent: |
| 363 | node.Name = t.scanner.string() |
| 364 | default: |
| 365 | return nil, ErrBadSubstitution |
| 366 | } |
| 367 | |
| 368 | t.scanner.accept = acceptIdent |
| 369 | t.scanner.mode = scanIdent |
| 370 | switch t.scanner.scan() { |
| 371 | case tokenIdent: |
| 372 | node.Param = t.scanner.string() |
| 373 | default: |
| 374 | return nil, ErrBadSubstitution |
| 375 | } |
| 376 | |
| 377 | return node, t.consumeRbrack() |
| 378 | } |
| 379 | |
| 380 | // consumeRbrack consumes a right closing bracket. If a closing |
| 381 | // bracket token is not consumed an ErrBadSubstitution is returned. |
no test coverage detected