From f81e8b5c8e7889e2b1d50075dd15d3c9a98c029f Mon Sep 17 00:00:00 2001 From: robotis Date: Sun, 6 May 2012 09:28:41 +0000 Subject: [PATCH] Add support for closures --- lesscpy/lessc/parser.py | 2 ++ lesscpy/plib/deferred.py | 1 + lesscpy/plib/mixin.py | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lesscpy/lessc/parser.py b/lesscpy/lessc/parser.py index de9a2fd..b4b2706 100644 --- a/lesscpy/lessc/parser.py +++ b/lesscpy/lessc/parser.py @@ -366,6 +366,8 @@ class LessParser(object): """ variable_decl : variable ':' style_list ';' """ p[0] = Variable(list(p)[1:-1], p.lineno(4)) + p[0].parse(self.scope) + self.scope.add_variable(p[0]) # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/lesscpy/plib/deferred.py b/lesscpy/plib/deferred.py index e9f6191..e84502d 100644 --- a/lesscpy/plib/deferred.py +++ b/lesscpy/plib/deferred.py @@ -60,6 +60,7 @@ class Deferred(Node): res = mixin.call(scope, args) if res: break if res: + [scope.add_variable(v) for v in mixin.vars] scope.deferred = ident res = [p.parse(scope) for p in res if p] while(any(t for t in res if type(t) is Deferred)): diff --git a/lesscpy/plib/mixin.py b/lesscpy/plib/mixin.py index a7d903f..2e34862 100644 --- a/lesscpy/plib/mixin.py +++ b/lesscpy/plib/mixin.py @@ -30,7 +30,9 @@ class Mixin(Node): self.name, args, self.guards = self.tokens[0] self.args = [a for a in utility.flatten(args) if a] self.body = Block([None, self.tokens[1]], 0) - self.scope = scope + self.vars = list(utility.flatten([list(v.values()) + for v in [s['__variables__'] + for s in scope]])) return self def raw(self):