summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEevee <eevee.github@veekun.com>2014-09-15 13:23:08 -0700
committerEevee <eevee.github@veekun.com>2014-09-15 13:23:08 -0700
commit041b8d6f07794647bac467b60e4f232ab2ffb3f2 (patch)
treeef2a7bd3b138488498e63c1e94f34deefd556949
parent141a445704963b59d24bc7919eff1913585ec5ad (diff)
parent6e1686757f589639c65e2f9b51b830eb137224c1 (diff)
downloadpyscss-041b8d6f07794647bac467b60e4f232ab2ffb3f2.tar.gz
Merge pull request #304 from doug-fish/1.2.x
Make an earier copy of the rules to close up the window for concurrent modification to break things.
-rw-r--r--scss/__init__.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/scss/__init__.py b/scss/__init__.py
index 00a366f..a0b0aad 100644
--- a/scss/__init__.py
+++ b/scss/__init__.py
@@ -1330,10 +1330,11 @@ class Scss(object):
# DEVIATION: These are used to rearrange rules in dependency order, so
# an @extended parent appears in the output before a child. Sass does
# not do this, and the results may be unexpected. Pending removal.
+ rules = list(self.rules)
rule_order = dict()
rule_dependencies = dict()
order = 0
- for rule in self.rules:
+ for rule in rules:
rule_order[rule] = order
# Rules are ultimately sorted by the earliest rule they must
# *precede*, so every rule should "depend" on the next one
@@ -1347,7 +1348,7 @@ class Scss(object):
# Now go through all the rules with an @extends and find their parent
# rules.
- for rule in self.rules:
+ for rule in rules:
for selector in rule.extends_selectors:
# This is a little dirty. intersection isn't a class method.
# Don't think about it too much.
@@ -1395,7 +1396,8 @@ class Scss(object):
more_parent_selectors))
rule_dependencies[parent_rule].append(rule_order[rule])
- self.rules.sort(key=lambda rule: min(rule_dependencies[rule]))
+ rules.sort(key=lambda rule: min(rule_dependencies[rule]))
+ self.rules = rules
@print_timing(3)
def parse_properties(self):