From c6344a3cb1aefe8ae69f48f52ded4a8cf0e4f7ab Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Sat, 25 Apr 2009 02:29:43 -0700 Subject: [PATCH] [Sass] Represent mixin args as arrays rather than hashes. --- lib/sass/engine.rb | 2 +- lib/sass/tree/mixin_node.rb | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/sass/engine.rb b/lib/sass/engine.rb index 2b2417a4..1f5a4cbd 100644 --- a/lib/sass/engine.rb +++ b/lib/sass/engine.rb @@ -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 diff --git a/lib/sass/tree/mixin_node.rb b/lib/sass/tree/mixin_node.rb index 921183fa..fe6c3f68 100644 --- a/lib/sass/tree/mixin_node.rb +++ b/lib/sass/tree/mixin_node.rb @@ -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