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

Method parseFor

parser/parser.go:213–259  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

211}
212
213func (p *parser) parseFor() error {
214 s := p.s
215 t, err := expectTagContents(s)
216 if err != nil {
217 return err
218 }
219 forStr := "for " + string(t.Value)
220 if err = validateForStmt(t.Value); err != nil {
221 return fmt.Errorf("invalid statement %q at %s: %s", forStr, s.Context(), err)
222 }
223 p.Printf("for %s {", t.Value)
224 p.prefix += "\t"
225 p.forDepth++
226 for s.Next() {
227 t := s.Token()
228 switch t.ID {
229 case text:
230 p.emitText(t.Value)
231 case tagName:
232 ok, err := p.tryParseCommonTags(t.Value)
233 if err != nil {
234 return fmt.Errorf("error in %q: %s", forStr, err)
235 }
236 if ok {
237 continue
238 }
239 switch string(t.Value) {
240 case "endfor":
241 if err = skipTagContents(s); err != nil {
242 return err
243 }
244 p.forDepth--
245 p.prefix = p.prefix[1:]
246 p.Printf("}")
247 return nil
248 default:
249 return fmt.Errorf("unexpected tag found in %q: %q at %s", forStr, t.Value, s.Context())
250 }
251 default:
252 return fmt.Errorf("unexpected token found when parsing %q: %s at %s", forStr, t, s.Context())
253 }
254 }
255 if err := s.LastError(); err != nil {
256 return fmt.Errorf("cannot parse %q: %s", forStr, err)
257 }
258 return fmt.Errorf("cannot find endfor tag for %q at %s", forStr, s.Context())
259}
260
261func (p *parser) parseDefault() error {
262 s := p.s

Callers 1

tryParseCommonTagsMethod · 0.95

Calls 10

PrintfMethod · 0.95
emitTextMethod · 0.95
tryParseCommonTagsMethod · 0.95
expectTagContentsFunction · 0.85
validateForStmtFunction · 0.85
skipTagContentsFunction · 0.85
ContextMethod · 0.80
NextMethod · 0.80
TokenMethod · 0.80
LastErrorMethod · 0.80

Tested by

no test coverage detected