Merge branch 'master' into sassc
Conflicts: lib/sass/css.rb lib/sass/engine.rb
This commit is contained in:
commit
58c12ee0ed
1
TODO
1
TODO
|
@ -1,4 +1,5 @@
|
|||
# -*- mode: org -*-
|
||||
#+STARTUP: nofold
|
||||
|
||||
* Documentation
|
||||
Convert to YARD, Markdown
|
||||
|
|
|
@ -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.
|
||||
#
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue