From 7fb8f71653cd0c1d424138f5382e119852680f0f Mon Sep 17 00:00:00 2001 From: Maciej Ksiazek Date: Tue, 12 Apr 2011 17:18:52 +0200 Subject: [PATCH] Allowing multiple externs to be passed in options --- lib/closure/compiler.rb | 8 +++++++- test/unit/test_closure_compiler.rb | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/closure/compiler.rb b/lib/closure/compiler.rb index 476d9b3..5fc30c3 100644 --- a/lib/closure/compiler.rb +++ b/lib/closure/compiler.rb @@ -51,7 +51,13 @@ def compile(io) # Serialize hash options to the command-line format. def serialize_options(options) - options.map {|k, v| ["--#{k}", v.to_s] }.flatten + options.map do |k, v| + if (v.is_a?(Array)) + v.map {|v2| ["--#{k}", v2.to_s]} + else + ["--#{k}", v.to_s] + end + end.flatten end def command diff --git a/test/unit/test_closure_compiler.rb b/test/unit/test_closure_compiler.rb index da518d8..dfeb471 100644 --- a/test/unit/test_closure_compiler.rb +++ b/test/unit/test_closure_compiler.rb @@ -60,4 +60,13 @@ def test_permissions assert File.executable?(COMPILER_JAR) end + def test_serialize_options + assert_equal ["--externs", "library1.js", "--compilation_level", "ADVANCED_OPTIMIZATIONS"], Closure::Compiler.new.send(:serialize_options, 'externs' => 'library1.js', "compilation_level" => "ADVANCED_OPTIMIZATIONS") + end + + def test_serialize_options_for_arrays + compiler = Closure::Compiler.new('externs' => ['library1.js', "library2.js"]) + assert_equal ["--externs", "library1.js", "--externs", "library2.js"], compiler.send(:serialize_options, 'externs' => ['library1.js', "library2.js"]) + end + end