[Groonga-commit] droonga/fluent-plugin-droonga at 869b2e1 [master] Convert commands based on the streaming API of groonga-command

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Sep 18 13:26:53 JST 2013


YUKI Hiroshi	2013-09-18 13:26:53 +0900 (Wed, 18 Sep 2013)

  New Revision: 869b2e1ae3ef8af5a7065be7ec8a812b93a04095
  https://github.com/droonga/fluent-plugin-droonga/commit/869b2e1ae3ef8af5a7065be7ec8a812b93a04095

  Message:
    Convert commands based on the streaming API of groonga-command

  Modified files:
    lib/groonga_command_converter.rb

  Modified: lib/groonga_command_converter.rb (+42 -20)
===================================================================
--- lib/groonga_command_converter.rb    2013-09-18 13:25:03 +0900 (e14dd1d)
+++ lib/groonga_command_converter.rb    2013-09-18 13:26:53 +0900 (0dfca54)
@@ -26,20 +26,42 @@ module Droonga
     def initialize(options={})
       @options = options
       @count = 0
+
+      @command_parser = Groonga::Command::Parser.new
     end
 
     def convert(input, &block)
-      @command = Groonga::Command::Parser.parse(input)
-      case****@comma*****
-      when "table_create"
-        yield create_table_create_command
-      when "column_create"
-        yield create_column_create_command
-      when "load"
-        split_load_command_to_add_commands(&block)
-      when "select"
-        yield create_select_command
+      @command_parser.on_command do |command|
+        case command.name
+        when "table_create"
+          yield create_table_create_command(command)
+        when "column_create"
+          yield create_column_create_command(command)
+        when "select"
+          yield create_select_command(command)
+        end
+      end
+
+      parsed_values = nil
+      parsed_columns = nil
+      @command_parser.on_load_start do |command|
+        parsed_values = []
+        parsed_columns = nil
       end
+      @command_parser.on_load_columns do |command, columns|
+        parsed_columns = columns
+      end
+      @command_parser.on_load_value do |command, value|
+        parsed_values << value
+      end
+      @command_parser.on_load_complete do |command|
+        command[:columns] = parsed_columns.join(",")
+        command[:values] = parsed_values.to_json
+        split_load_command_to_add_commands(command, &block)
+      end
+
+      @command_parser << input
+      @command_parser.finish
     end
 
     private
@@ -74,21 +96,21 @@ module Droonga
       time.iso8601
     end
 
-    def create_table_create_command
-      create_envelope("table_create", @command.arguments)
+    def create_table_create_command(command)
+      create_envelope("table_create", command.arguments)
     end
 
-    def create_column_create_command
-      create_envelope("column_create", @command.arguments)
+    def create_column_create_command(command)
+      create_envelope("column_create", command.arguments)
     end
 
-    def split_load_command_to_add_commands(&block)
-      columns = @command[:columns].split(",")
-      values = @command[:values]
+    def split_load_command_to_add_commands(command, &block)
+      columns = command[:columns].split(",")
+      values = command[:values]
       values = JSON.parse(values)
       values.each do |record|
         body = {
-          :table => @command[:table],
+          :table => command[:table],
         }
 
         record_values = {}
@@ -106,8 +128,8 @@ module Droonga
       end
     end
 
-    def create_select_command
-      create_envelope("select", @command.arguments)
+    def create_select_command(command)
+      create_envelope("select", command.arguments)
     end
   end
 end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index