MCPcopy
hub / github.com/valyala/quicktemplate / parseCase

Method parseCase

parser/parser.go:294–329  ·  view source on GitHub ↗
(switchValue string)

Source from the content-addressed store, hash-verified

292}
293
294func (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
331func (p *parser) parseCat() error {
332 s := p.s

Callers 1

parseSwitchMethod · 0.95

Calls 10

PrintfMethod · 0.95
emitTextMethod · 0.95
tryParseCommonTagsMethod · 0.95
expectTagContentsFunction · 0.85
validateCaseStmtFunction · 0.85
ContextMethod · 0.80
NextMethod · 0.80
TokenMethod · 0.80
RewindMethod · 0.80
LastErrorMethod · 0.80

Tested by

no test coverage detected