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
|
||||
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 = Script.parse(default, @line).perform(@environment) if default
|
||||
default = Script.parse(default, @line) if default
|
||||
{ :name => arg[1..-1], :default_value => default }
|
||||
end
|
||||
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)|
|
||||
env[arg[:name]] = if value
|
||||
value.perform(environment)
|
||||
else
|
||||
arg[:default_value]
|
||||
elsif arg[:default_value]
|
||||
arg[:default_value].perform(env)
|
||||
end
|
||||
raise Sass::SyntaxError.new("Mixin #{@mixin.name} is missing parameter !#{arg[:name]}.") unless env[arg[:name]]
|
||||
env
|
||||
|
|
|
@ -387,12 +387,12 @@ SASS
|
|||
one {
|
||||
color: #ffffff;
|
||||
padding: 1px;
|
||||
margin: 8px; }
|
||||
margin: 4px; }
|
||||
|
||||
two {
|
||||
color: #ffffff;
|
||||
padding: 2px;
|
||||
margin: 8px; }
|
||||
margin: 5px; }
|
||||
|
||||
three {
|
||||
color: #ffffff;
|
||||
|
@ -400,7 +400,7 @@ three {
|
|||
margin: 3px; }
|
||||
CSS
|
||||
!a = 5px
|
||||
=foo(!a, !b = 1px, !c = 3px + !a)
|
||||
=foo(!a, !b = 1px, !c = 3px + !b)
|
||||
:color= !a
|
||||
:padding= !b
|
||||
:margin= !c
|
||||
|
|
Loading…
Reference in New Issue