summaryrefslogtreecommitdiff
path: root/scss/compiler.py
diff options
context:
space:
mode:
authorEevee (Alex Munroe) <eevee.git@veekun.com>2014-09-16 19:02:04 -0700
committerEevee (Alex Munroe) <eevee.git@veekun.com>2014-09-16 19:02:04 -0700
commit11494ad30b4f9eab6dc1d9864722e28252641d2c (patch)
tree3d4c7ec2f44361d6d3eae7b120fab6720de674fe /scss/compiler.py
parent8c530adb664f8277c5d2f989522324f9eb1d9c63 (diff)
downloadpyscss-11494ad30b4f9eab6dc1d9864722e28252641d2c.tar.gz
Make apply_extends more threadsafe, probably. Fixes #304.
Diffstat (limited to 'scss/compiler.py')
-rw-r--r--scss/compiler.py13
1 files changed, 5 insertions, 8 deletions
diff --git a/scss/compiler.py b/scss/compiler.py
index 72e39a5..f13c86a 100644
--- a/scss/compiler.py
+++ b/scss/compiler.py
@@ -255,7 +255,7 @@ class Compilation(object):
self.parse_children()
# this will manage @extends
- self.apply_extends()
+ self.rules = self.apply_extends(self.rules)
rules_by_file, css_files = self.parse_properties()
@@ -1209,7 +1209,7 @@ class Compilation(object):
self._warn_unused_imports(new_rule)
# @print_timing(3)
- def apply_extends(self):
+ def apply_extends(self, rules):
"""Run through the given rules and translate all the pending @extends
declarations into real selectors on parent rules.
@@ -1224,7 +1224,7 @@ class Compilation(object):
selector_to_rules = defaultdict(set)
rule_selector_order = {}
order = 0
- for rule in self.rules:
+ for rule in rules:
for selector in rule.selectors:
for key in selector.lookup_key():
key_to_selectors[key].add(selector)
@@ -1234,7 +1234,7 @@ class Compilation(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.
@@ -1293,10 +1293,7 @@ class Compilation(object):
more_parent_selectors))
# Remove placeholder-only rules
- self.rules = [
- rule for rule in self.rules
- if not rule.is_pure_placeholder
- ]
+ return [rule for rule in rules if not rule.is_pure_placeholder]
# @print_timing(3)
def parse_properties(self):