Exemple #1
0
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
Exemple #2
0
 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
Exemple #3
0
 def _get_flat_expr(self):
     bc = self.binding_context
     return Expr.reduce([i.expr % bc for i in self.implements.all()])
Exemple #4
0
 def _get_expr(self):
     bc, c = self.binding_context, self.context
     return Expr.reduce([(i.expr % bc) % c for i in self.implements.all()])
Exemple #5
0
 def clean(self, value):
     value = super(ExprFormField, self).clean(value)
     try:
         expr = Expr.parse(value)
     except Exception, e:
         raise forms.ValidationError(e)