def __init__(self, lhs, rhs): ExpressionWithLHS.__init__(self, rhs) if not MathUtil.is_single_symbol(lhs): err = 'Expecting a single symbol on the LHS; got: %s' % lhs raise NineMLRuntimeError(err) if not is_valid_lhs_target(lhs): err = 'Invalid LHS target: %s' % lhs raise NineMLRuntimeError(err) self._lhs = lhs.strip()
def On(trigger, do=None, to=None): if isinstance(do, (OutputEvent, basestring)): do = [do] elif do == None: do = [] else: pass if isinstance(trigger, basestring): if MathUtil.is_single_symbol(trigger): return DoOnEvent(input_event=trigger, do=do, to=to) else: return DoOnCondition(condition=trigger, do=do, to=to) elif isinstance(trigger, OnCondition): return DoOnCondition(condition=trigger, do=do, to=to) else: err = "Unexpected Type for On() trigger: %s %s" % (type(trigger), str(trigger)) raise NineMLRuntimeError(err)
def test_is_single_symbol(self): # Signature: name(cls, expr) # Returns ``True`` if the expression is a single symbol, possibly # surrounded with white-spaces # # >>> is_single_symbol('hello') # True # # >>> is_single_symbol('hello * world') # False self.assertTrue(MathUtil.is_single_symbol("t")) self.assertTrue(MathUtil.is_single_symbol("var_1")) self.assertTrue(MathUtil.is_single_symbol("var_long_name")) self.assertTrue(MathUtil.is_single_symbol("_myName")) self.assertFalse(MathUtil.is_single_symbol("r + y")) self.assertFalse(MathUtil.is_single_symbol("r+y")) self.assertFalse(MathUtil.is_single_symbol("sin(y)"))