(switchValue string)
| 292 | } |
| 293 | |
| 294 | func (p *parser) parseCase(switchValue string) error { |
| 295 | s := p.s |
| 296 | t, err := expectTagContents(s) |
| 297 | if err != nil { |
| 298 | return err |
| 299 | } |
| 300 | caseStr := "case " + string(t.Value) |
| 301 | if err = validateCaseStmt(switchValue, t.Value); err != nil { |
| 302 | return fmt.Errorf("invalid statement %q at %s: %s", caseStr, s.Context(), err) |
| 303 | } |
| 304 | p.Printf("case %s:", t.Value) |
| 305 | p.prefix += "\t" |
| 306 | for s.Next() { |
| 307 | t := s.Token() |
| 308 | switch t.ID { |
| 309 | case text: |
| 310 | p.emitText(t.Value) |
| 311 | case tagName: |
| 312 | ok, err := p.tryParseCommonTags(t.Value) |
| 313 | if err != nil { |
| 314 | return fmt.Errorf("error in %q: %s", caseStr, err) |
| 315 | } |
| 316 | if !ok { |
| 317 | s.Rewind() |
| 318 | p.prefix = p.prefix[1:] |
| 319 | return nil |
| 320 | } |
| 321 | default: |
| 322 | return fmt.Errorf("unexpected token found when parsing %q: %s at %s", caseStr, t, s.Context()) |
| 323 | } |
| 324 | } |
| 325 | if err := s.LastError(); err != nil { |
| 326 | return fmt.Errorf("cannot parse %q: %s", caseStr, err) |
| 327 | } |
| 328 | return fmt.Errorf("cannot find end of %q at %s", caseStr, s.Context()) |
| 329 | } |
| 330 | |
| 331 | func (p *parser) parseCat() error { |
| 332 | s := p.s |
no test coverage detected