Separate element constructors from regular constructors.
[python-bulletml.git] / bulletml / expr.py
index 7654fed..3c80b06 100644 (file)
@@ -31,12 +31,13 @@ class NumberDef(object):
     """
 
     GLOBALS = dict(random=random.random, __builtins__={})
+
     def __init__(self, expr):
         try:
-            expr = expr.__original
+            expr = expr.string
         except AttributeError:
             pass
-        self.__original = expr
+        self.string = expr
         repl = lambda match: "params[%d]" % (int(match.group()[1:]) - 1)
         expr = re.sub(r"\$\d+", repl, expr.lower())
         self.__expr = expr.replace("$rand", "random()").replace("$rank", "rank")
@@ -61,7 +62,7 @@ class NumberDef(object):
         return eval(self.__expr, self.GLOBALS, variables)
 
     def __repr__(self):
-        return "%s(%r)" % (type(self).__name__, self.__original)
+        return "%s(%r)" % (type(self).__name__, self.string)
 
 class INumberDef(NumberDef):
     """A NumberDef, but returns rounded integer results."""