Merge branch 'master' into sassc

Conflicts:
	lib/sass/css.rb
	lib/sass/engine.rb
This commit is contained in:
Nathan Weizenbaum 2009-04-29 15:29:29 -07:00
commit 58c12ee0ed
8 changed files with 31 additions and 34 deletions

1
TODO
View File

@ -1,4 +1,5 @@
# -*- mode: org -*-
#+STARTUP: nofold
* Documentation
Convert to YARD, Markdown

View File

@ -711,6 +711,8 @@ require 'haml/version'
# [javascript] Surrounds the filtered text with <script> and CDATA tags.
# Useful for including inline Javascript.
#
# [cdata] Surrounds the filtered text with CDATA tags.
#
# [escaped] Works the same as plain, but HTML-escapes the text
# before placing it in the document.
#

View File

@ -32,7 +32,6 @@ module Haml
def self.included(base) # :nodoc:
Filters.defined[base.name.split("::").last.downcase] = base
base.extend(base)
base.instance_variable_set "@lazy_requires", nil
end
# Takes a string, the source text that should be passed to the filter,

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

@ -118,12 +118,6 @@ module Sass
rescue SyntaxError => e; e.add_metadata(@options[:filename], @line)
end
protected
def environment
@environment
end
private
def tabulate(string)
@ -399,7 +393,7 @@ END
raise SyntaxError.new("Invalid variable \"#{arg}\".", @line) unless arg =~ Script::VALIDATE
raise SyntaxError.new("Required arguments must not follow optional arguments \"#{arg}\".", @line) if default_arg_found && !default
default = parse_script(default, :offset => line.offset + line.text.index(default)) if default
{ :name => arg[1..-1], :default_value => default }
[arg[1..-1], default]
end
Tree::MixinDefNode.new(name, args)
end

View File

@ -22,12 +22,20 @@ module Sass
end
def set_#{name}(name, value)
if @parent && @parent.#{name}(name)
@parent.set_#{name}(name, value)
else
@#{name}s[name] = value unless try_set_#{name}(name, value)
end
def try_set_#{name}(name, value)
if @#{name}s.include?(name)
@#{name}s[name] = value
true
elsif @parent
@parent.try_set_#{name}(name, value)
else
false
end
end
protected :try_set_#{name}
def set_local_#{name}(name, value)
@#{name}s[name] = value

View File

@ -18,14 +18,15 @@ Mixin #{@name} takes #{mixin.args.size} argument#{'s' if mixin.args.size != 1}
but #{@args.size} #{@args.size == 1 ? 'was' : 'were'} passed.
END
environment = mixin.args.zip(@args).inject(Sass::Environment.new(mixin.environment)) do |env, (arg, value)|
env.set_local_var(arg[:name],
environment = mixin.args.zip(@args).
inject(Sass::Environment.new(mixin.environment)) do |env, ((name, default), value)|
env.set_local_var(name,
if value
value.perform(environment)
elsif arg[:default_value]
arg[:default_value].perform(env)
elsif default
default.perform(env)
end)
raise Sass::SyntaxError.new("Mixin #{@name} is missing parameter !#{arg[:name]}.") unless env.var(arg[:name])
raise Sass::SyntaxError.new("Mixin #{@name} is missing parameter !#{name}.") unless env.var(name)
env
end
mixin.tree.map {|c| c.perform(environment)}.flatten

View File

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