null+****@clear*****
null+****@clear*****
2012年 6月 5日 (火) 16:28:03 JST
Haruka Yoshihara 2012-06-05 16:28:03 +0900 (Tue, 05 Jun 2012) New Revision: 9ad74196a3649ca246a7ccd9f8d52d4ec4585580 Log: Translater: Update translate_command to translate a single command only Modified files: lib/groonga/tester.rb test/test-executor.rb Modified: lib/groonga/tester.rb (+14 -38) =================================================================== --- lib/groonga/tester.rb 2012-06-05 15:41:27 +0900 (bc1f41a) +++ lib/groonga/tester.rb 2012-06-05 16:28:03 +0900 (0b12d00) @@ -616,49 +616,25 @@ module Groonga end class Translater - def translate_command(commands) - translated_commands = [] - now_command = "" - translated_values = [] - loading = false - load_values = "" - - commands.each_line do |_command| - command = _command.chomp - next if command.empty? - - if command =~ /\A\s*\#/ - translated_commands << "#{command}\n" - next - end + def translate_command(command) + command = command.chomp + return "" if command.empty? - if loading - load_values << command - if command == "]" - translated_values = - translated_values.merge("values" => load_values) - loading = false - load_values = "" - end - else - command = command.gsub(/,\s/, ",") - arguments = command.split(/(\s'.+?'\s|\s)/).collect(&:strip) - now_command = arguments.shift + return command if command =~ /\A(?!\s+)\W/ - if now_command == "load" - loading = true - load_values = "" - end + command = command.gsub(/,\s/, ",") + arguments = command.split(/(\s'.+?'\s|\s)/).collect(&:strip) + now_command = arguments.shift - translated_values = translate_arguments(now_command, arguments) - end + translated_values = translate_arguments(now_command, arguments) + translated_command = + build_http_command(now_command, translated_values) - unless loading - translated_commands << - build_http_command(now_command, translated_values) - end + if now_command == "load" + translated_command << "&values=" end - translated_commands.join + + translated_command end private Modified: test/test-executor.rb (+23 -22) =================================================================== --- test/test-executor.rb 2012-06-05 15:41:27 +0900 (49c2daa) +++ test/test-executor.rb 2012-06-05 16:28:03 +0900 (760f09b) @@ -83,36 +83,41 @@ class TestExecutor < Test::Unit::TestCase end def test_load_command - command = <<EOF -load --table Sites + load_command = "load --table Sites" + load_values = <<EOF [ ["_key","uri"], ["groonga","http://groonga.org/"], ["razil","http://razil.jp/"] ] EOF - expected_command = - "/d/load?table=Sites&values=[[\"_key\",\"uri\"]," + - "[\"groonga\",\"http://groonga.org/\"]," + - "[\"razil\",\"http://razil.jp/\"]]" - actual_command = translate(command) + load_values = load_values.chomp + commands = "#{load_command}\n#{load_values}" - assert_equal(expected_command, actual_command) + expected_command = "/d/load?table=Sites&values=\n#{load_values}" + actual_commands = commands.lines.collect do |line| + translate(line) + end + + assert_equal(expected_command, actual_commands.join("\n")) end def test_load_command_with_json_value - command = <<EOF -load --table Sites + load_command = "load --table Sites" + load_values = <<EOF [ {"_key": "ruby", "uri": "http://ruby-lang.org/"} ] EOF - expected_command = - "/d/load?table=Sites&values=[{\"_key\": \"ruby\", " + - "\"uri\": \"http://ruby-lang.org/\"}]" - actual_command = translate(command) + load_values = load_values.chomp + commands = "#{load_command}\n#{load_values}" - assert_equal(expected_command, actual_command) + expected_command = "/d/load?table=Sites&values=\n#{load_values}" + actual_commands = commands.lines.collect do |line| + translate(line) + end + + assert_equal(expected_command, actual_commands.join("\n")) end def test_command_with_single_quote @@ -123,14 +128,10 @@ EOF assert_equal(expected_command, actual_command) end - def test_command_with_comment + def test_comment comment = "#this is comment." - command = "#{comment}\n" + - "select --table Sites" - expected_command = "#{comment}\n" + - "/d/select?table=Sites" - actual_command = translate(command) - + expected_command = comment + actual_command = translate(comment) assert_equal(expected_command, actual_command) end