From 329e74c5beadd956547f6bd9867d361d33e90743 Mon Sep 17 00:00:00 2001 From: jtm Date: Sun, 12 Feb 2012 14:31:51 +0000 Subject: [PATCH] nested scopes --- lesscpy/plib/block.py | 16 +++++++++------- lesscpy/plib/mixin.py | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lesscpy/plib/block.py b/lesscpy/plib/block.py index 52cdce6..5948feb 100644 --- a/lesscpy/plib/block.py +++ b/lesscpy/plib/block.py @@ -20,8 +20,6 @@ class Block(Process): self._blocktype = None self.scope = scope self._proplist() - self.parsed['inner'] = [p for p in self._p[2] - if type(p) is type(self)] self._pname() if self._name.startswith('@media'): self._blocktype = 'inner' @@ -73,9 +71,13 @@ class Block(Process): Multiple porperties of the same type overwrite, so we can safely take only the last. """ - proplist = [p for p in utility.flatten(self._p[2]) - if p and type(p) != type(self)] store = OrderedDict() - for p in proplist: - store[p.parsed['property']] = p - self.parsed['proplist'] = store.values() + self.parsed['inner'] = [] + for p in utility.flatten(self._p[2]): + if not p: continue + if not p.parsed: p.parse(self.scope) + if type(p) is type(self): + self.parsed['inner'].append(p) + elif 'property' in p.parsed: + store[p.parsed['property']] = p + self.parsed['proplist'] = list(store.values()) diff --git a/lesscpy/plib/mixin.py b/lesscpy/plib/mixin.py index 4c5dd29..121c251 100644 --- a/lesscpy/plib/mixin.py +++ b/lesscpy/plib/mixin.py @@ -46,7 +46,7 @@ class Mixin(Process): if p] self.scope = scope if scope else Scope(True) self.scope[0]['__variables__'].update(self.stash) - prop = [copy.copy(p) for p in self.prop if p] + prop = [copy.deepcopy(p) for p in self.prop if p] prop = utility.flatten([p.call(args, self.scope) if type(p) is Mixin else p for p in prop])