MCPcopy
hub / github.com/pallets/jinja / parse_for

Method parse_for

src/jinja2/parser.py:236–253  ·  view source on GitHub ↗

Parse a for loop.

(self)

Source from the content-addressed store, hash-verified

234 return nodes.AssignBlock(target, filter_node, body, lineno=lineno)
235
236 def parse_for(self) -> nodes.For:
237 """Parse a for loop."""
238 lineno = self.stream.expect("name:for").lineno
239 target = self.parse_assign_target(extra_end_rules=("name:in",))
240 self.stream.expect("name:in")
241 iter = self.parse_tuple(
242 with_condexpr=False, extra_end_rules=("name:recursive",)
243 )
244 test = None
245 if self.stream.skip_if("name:if"):
246 test = self.parse_expression()
247 recursive = self.stream.skip_if("name:recursive")
248 body = self.parse_statements(("name:endfor", "name:else"))
249 if next(self.stream).value == "endfor":
250 else_ = []
251 else:
252 else_ = self.parse_statements(("name:endfor",), drop_needle=True)
253 return nodes.For(target, iter, body, else_, test, recursive, lineno=lineno)
254
255 def parse_if(self) -> nodes.If:
256 """Parse an if construct."""

Callers

nothing calls this directly

Calls 6

parse_assign_targetMethod · 0.95
parse_tupleMethod · 0.95
parse_expressionMethod · 0.95
parse_statementsMethod · 0.95
expectMethod · 0.80
skip_ifMethod · 0.80

Tested by

no test coverage detected