1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00

[Sass] Make the Tree::RuleNode API a little more consistent.

This commit is contained in:
Nathan Weizenbaum 2009-04-25 13:56:30 -07:00
parent c6344a3cb1
commit a2cb35e0ca
2 changed files with 10 additions and 18 deletions

View file

@ -19,7 +19,7 @@ module Sass
class RuleNode
def to_sass(tabs, opts = {})
str = "\n#{' ' * tabs}#{rule}#{children.any? { |c| c.is_a? AttrNode } ? "\n" : ''}"
str = "\n#{' ' * tabs}#{rules.first}#{children.any? { |c| c.is_a? AttrNode } ? "\n" : ''}"
children.each do |child|
str << "#{child.to_sass(tabs + 1, opts)}"
@ -229,8 +229,8 @@ module Sass
# but it's necessary to get nesting to work properly.
def expand_commas(root)
root.children.map! do |child|
next child unless Tree::RuleNode === child && child.rule.include?(',')
child.rule.split(',').map do |rule|
next child unless Tree::RuleNode === child && child.rules.first.include?(',')
child.rules.first.split(',').map do |rule|
node = Tree::RuleNode.new(rule.strip, {})
node.children = child.children
node
@ -276,10 +276,10 @@ module Sass
rules = OrderedHash.new
root.children.select { |c| Tree::RuleNode === c }.each do |child|
root.children.delete child
first, rest = child.rule.scan(/^(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?$/).first
first, rest = child.rules.first.scan(/^(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?$/).first
rules[first] ||= Tree::RuleNode.new(first, {})
if rest
child.rule = "&" + rest
child.rules = ["&" + rest]
rules[first] << child
else
rules[first].children += child.children
@ -305,7 +305,7 @@ module Sass
def remove_parent_refs(root)
root.children.each do |child|
if child.is_a?(Tree::RuleNode)
child.rule.gsub! /^& +/, ''
child.rules.first.gsub! /^& +/, ''
remove_parent_refs child
end
end
@ -342,10 +342,10 @@ module Sass
while rule.children.size == 1 && rule.children.first.is_a?(Tree::RuleNode)
child = rule.children.first
if child.rule[0] == ?&
rule.rule = child.rule.gsub /^&/, rule.rule
if child.rules.first[0] == ?&
rule.rules = [child.rules.first.gsub(/^&/, rule.rules.first)]
else
rule.rule = "#{rule.rule} #{child.rule}"
rule.rules = ["#{rule.rules.first} #{child.rules.first}"]
end
rule.children = child.children
@ -374,7 +374,7 @@ module Sass
next child unless child.is_a?(Tree::RuleNode)
if prev_rule && prev_rule.children == child.children
prev_rule.rule << ", #{child.rule}"
prev_rule.rules.first << ", #{child.rules.first}"
next nil
end

View file

@ -12,14 +12,6 @@ module Sass::Tree
super(options)
end
def rule
rules.first
end
def rule=(rule)
self.rules = [rule]
end
def ==(other)
self.class == other.class && rules == other.rules && super
end