def render(w, g): """ Render expression w to graph g. """ try: expr = Expr.parse(w) except Exception: g.add_node("invalid", label="Could not parse") return r = Renderer() r.add_expr(expr, g) return expr
def get_signature(self, as_implemented_by_type=None): type = as_implemented_by_type bc = type and type.binding_context or None c = type and type.context or None def resolve(expr): if bc: expr = expr % bc if c: expr = expr % c return expr # resolve = lambda expr: type and ((expr % bc) % c) or expr w = u'%s(%s)' % (self.name, ' ; '.join([ '%s : %r' % (p.name, resolve(p.expr)) for p in self.parameters.all()])) ret = Expr.parse(self.return_expression_text) if ret: w += ' : %s' % resolve(ret) return w
def _get_flat_expr(self): bc = self.binding_context return Expr.reduce([i.expr % bc for i in self.implements.all()])
def _get_expr(self): bc, c = self.binding_context, self.context return Expr.reduce([(i.expr % bc) % c for i in self.implements.all()])
def clean(self, value): value = super(ExprFormField, self).clean(value) try: expr = Expr.parse(value) except Exception, e: raise forms.ValidationError(e)