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

[Sass] Represent mixin args as arrays rather than hashes.

This commit is contained in:
Nathan Weizenbaum 2009-04-25 02:29:43 -07:00
parent ebd8872b8e
commit c6344a3cb1
2 changed files with 7 additions and 6 deletions

View file

@ -408,7 +408,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, @options)
end

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