MCPcopy Index your code
hub / github.com/webpy/webpy / parse_expr

Method parse_expr

web/db.py:1645–1675  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1643 return text and text[0] in "0123456789\"'"
1644
1645 def parse_expr(self):
1646 match, pos = self.match()
1647 if self.is_literal(match.group()):
1648 expr = _Node("literal", match.group())
1649 else:
1650 expr = _Node("param", self.text[self.pos : pos])
1651 self.pos = pos
1652 while self.pos < len(self.text):
1653 if (
1654 self.text[self.pos] == "."
1655 and self.pos + 1 < len(self.text)
1656 and self.text[self.pos + 1] in self.namechars
1657 ):
1658 self.pos += 1
1659 match, pos = self.match()
1660 attr = match.group()
1661 expr = _Node("getattr", expr, attr)
1662 self.pos = pos
1663 elif self.text[self.pos] == "[":
1664 saved_pos = self.pos
1665 self.pos += 1
1666 key = self.parse_expr()
1667 if self.text[self.pos] == "]":
1668 self.pos += 1
1669 expr = _Node("getitem", expr, key)
1670 else:
1671 self.pos = saved_pos
1672 break
1673 else:
1674 break
1675 return expr
1676
1677
1678class SafeEval:

Callers 1

parse_allMethod · 0.95

Calls 3

matchMethod · 0.95
is_literalMethod · 0.95
_NodeClass · 0.85

Tested by

no test coverage detected