From b01641126192ffb9926784a0b62c02840e68c821 Mon Sep 17 00:00:00 2001 From: "Eevee (Alex Munroe)" Date: Mon, 19 Aug 2013 17:27:23 -0700 Subject: Simplify AST cache. --- scss/expression.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/scss/expression.py b/scss/expression.py index 686781f..38a0064 100644 --- a/scss/expression.py +++ b/scss/expression.py @@ -30,6 +30,8 @@ FATAL_UNDEFINED = True class Calculator(object): """Expression evaluator.""" + ast_cache = {} + def __init__(self, namespace=None): if namespace is None: self.namespace = Namespace() @@ -115,13 +117,6 @@ class Calculator(object): value = _vi return value - def get_ast_cache(self, target): - if not hasattr(self, 'ast_cache'): - self.__class__.ast_cache = {} - if target not in self.ast_cache: - self.ast_cache[target] = {} - return self.ast_cache[target] - def evaluate_expression(self, expr, divide=False): try: ast = self.parse_expression(expr) @@ -140,9 +135,9 @@ class Calculator(object): if not isinstance(expr, six.string_types): raise TypeError("Expected string, got %r" % (expr,)) - ast_cache = self.get_ast_cache(target) - if expr in ast_cache: - return ast_cache[expr] + key = (target, expr) + if key in self.ast_cache: + return self.ast_cache[key] try: parser = SassExpression(SassExpressionScanner(expr)) @@ -150,7 +145,7 @@ class Calculator(object): except SyntaxError, e: raise SassParseError(e, expression=expr, expression_pos=parser._char_pos) - ast_cache[expr] = ast + self.ast_cache[key] = ast return ast -- cgit v1.2.1