Resolve variable references in mixin defaults to other args first, then globals.
This commit is contained in:
parent
538e5e9519
commit
f541899530
|
@ -396,7 +396,7 @@ END
|
||||||
default_arg_found ||= default
|
default_arg_found ||= default
|
||||||
raise SyntaxError.new("Invalid variable \"#{arg}\".", @line) unless arg =~ Script::VALIDATE
|
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
|
raise SyntaxError.new("Required arguments must not follow optional arguments \"#{arg}\".", @line) if default_arg_found && !default
|
||||||
default = Script.parse(default, @line).perform(@environment) if default
|
default = Script.parse(default, @line) if default
|
||||||
{ :name => arg[1..-1], :default_value => default }
|
{ :name => arg[1..-1], :default_value => default }
|
||||||
end
|
end
|
||||||
mixin = @mixins[name] = Mixin.new(name, args, [])
|
mixin = @mixins[name] = Mixin.new(name, args, [])
|
||||||
|
|
|
@ -15,8 +15,8 @@ module Sass::Tree
|
||||||
perform_children(@mixin.args.zip(@args).inject(environment.dup) do |env, (arg, value)|
|
perform_children(@mixin.args.zip(@args).inject(environment.dup) do |env, (arg, value)|
|
||||||
env[arg[:name]] = if value
|
env[arg[:name]] = if value
|
||||||
value.perform(environment)
|
value.perform(environment)
|
||||||
else
|
elsif arg[:default_value]
|
||||||
arg[:default_value]
|
arg[:default_value].perform(env)
|
||||||
end
|
end
|
||||||
raise Sass::SyntaxError.new("Mixin #{@mixin.name} is missing parameter !#{arg[:name]}.") unless env[arg[:name]]
|
raise Sass::SyntaxError.new("Mixin #{@mixin.name} is missing parameter !#{arg[:name]}.") unless env[arg[:name]]
|
||||||
env
|
env
|
||||||
|
|
|
@ -387,12 +387,12 @@ SASS
|
||||||
one {
|
one {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
margin: 8px; }
|
margin: 4px; }
|
||||||
|
|
||||||
two {
|
two {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
margin: 8px; }
|
margin: 5px; }
|
||||||
|
|
||||||
three {
|
three {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
|
@ -400,7 +400,7 @@ three {
|
||||||
margin: 3px; }
|
margin: 3px; }
|
||||||
CSS
|
CSS
|
||||||
!a = 5px
|
!a = 5px
|
||||||
=foo(!a, !b = 1px, !c = 3px + !a)
|
=foo(!a, !b = 1px, !c = 3px + !b)
|
||||||
:color= !a
|
:color= !a
|
||||||
:padding= !b
|
:padding= !b
|
||||||
:margin= !c
|
:margin= !c
|
||||||
|
|
Loading…
Reference in New Issue