Fix a css2sass bug.
Rule-flattening wasn't working quite properly. foo.bar { baz: boom } would render as foo &.bar baz: boom
This commit is contained in:
parent
b05cafdf41
commit
0b1d5c48d9
|
@ -313,6 +313,17 @@ module Sass
|
||||||
# foo bar baz
|
# foo bar baz
|
||||||
# color: red
|
# color: red
|
||||||
#
|
#
|
||||||
|
# and
|
||||||
|
#
|
||||||
|
# foo
|
||||||
|
# &.bar
|
||||||
|
# color: blue
|
||||||
|
#
|
||||||
|
# becomes
|
||||||
|
#
|
||||||
|
# foo.bar
|
||||||
|
# color: blue
|
||||||
|
#
|
||||||
def flatten_rules(root)
|
def flatten_rules(root)
|
||||||
root.children.each { |child| flatten_rule(child) if child.is_a?(Tree::RuleNode) }
|
root.children.each { |child| flatten_rule(child) if child.is_a?(Tree::RuleNode) }
|
||||||
end
|
end
|
||||||
|
@ -320,7 +331,13 @@ module Sass
|
||||||
def flatten_rule(rule)
|
def flatten_rule(rule)
|
||||||
while rule.children.size == 1 && rule.children.first.is_a?(Tree::RuleNode)
|
while rule.children.size == 1 && rule.children.first.is_a?(Tree::RuleNode)
|
||||||
child = rule.children.first
|
child = rule.children.first
|
||||||
rule.rule = "#{rule.rule} #{child.rule}"
|
|
||||||
|
if child.rule[0] == ?&
|
||||||
|
rule.rule = child.rule.gsub /^&/, rule.rule
|
||||||
|
else
|
||||||
|
rule.rule = "#{rule.rule} #{child.rule}"
|
||||||
|
end
|
||||||
|
|
||||||
rule.children = child.children
|
rule.children = child.children
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue