[Groonga-commit] groonga/groonga at 095b64e [master] mrb writer: support array and map

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Feb 5 18:39:58 JST 2015


Kouhei Sutou	2015-02-05 18:39:58 +0900 (Thu, 05 Feb 2015)

  New Revision: 095b64e3bcf9e1171b23ed97afdf605156499423
  https://github.com/groonga/groonga/commit/095b64e3bcf9e1171b23ed97afdf605156499423

  Message:
    mrb writer: support array and map

  Added files:
    lib/mrb/scripts/writer.rb
  Modified files:
    lib/mrb/mrb_writer.c
    lib/mrb/scripts/initialize/post.rb
    lib/mrb/scripts/sources.am

  Modified: lib/mrb/mrb_writer.c (+54 -0)
===================================================================
--- lib/mrb/mrb_writer.c    2015-02-05 18:30:20 +0900 (08d1e5a)
+++ lib/mrb/mrb_writer.c    2015-02-05 18:39:58 +0900 (8143fd9)
@@ -59,6 +59,52 @@ writer_write(mrb_state *mrb, mrb_value self)
   return mrb_nil_value();
 }
 
+static mrb_value
+writer_open_array(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  char *name;
+  mrb_int n_elements;
+
+  mrb_get_args(mrb, "zi", &name, &n_elements);
+  GRN_OUTPUT_ARRAY_OPEN(name, n_elements);
+
+  return mrb_nil_value();
+}
+
+static mrb_value
+writer_close_array(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+
+  GRN_OUTPUT_ARRAY_CLOSE();
+
+  return mrb_nil_value();
+}
+
+static mrb_value
+writer_open_map(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+  char *name;
+  mrb_int n_elements;
+
+  mrb_get_args(mrb, "zi", &name, &n_elements);
+  GRN_OUTPUT_MAP_OPEN(name, n_elements);
+
+  return mrb_nil_value();
+}
+
+static mrb_value
+writer_close_map(mrb_state *mrb, mrb_value self)
+{
+  grn_ctx *ctx = (grn_ctx *)mrb->ud;
+
+  GRN_OUTPUT_MAP_CLOSE();
+
+  return mrb_nil_value();
+}
+
 void
 grn_mrb_writer_init(grn_ctx *ctx)
 {
@@ -70,5 +116,13 @@ grn_mrb_writer_init(grn_ctx *ctx)
   klass = mrb_define_class_under(mrb, module, "Writer", mrb->object_class);
 
   mrb_define_method(mrb, klass, "write", writer_write, MRB_ARGS_REQ(1));
+  mrb_define_method(mrb, klass, "open_array",
+                    writer_open_array, MRB_ARGS_REQ(2));
+  mrb_define_method(mrb, klass, "close_array",
+                    writer_close_array, MRB_ARGS_NONE());
+  mrb_define_method(mrb, klass, "open_map",
+                    writer_open_map, MRB_ARGS_REQ(2));
+  mrb_define_method(mrb, klass, "close_map",
+                    writer_close_map, MRB_ARGS_NONE());
 }
 #endif

  Modified: lib/mrb/scripts/initialize/post.rb (+2 -0)
===================================================================
--- lib/mrb/scripts/initialize/post.rb    2015-02-05 18:30:20 +0900 (94daf05)
+++ lib/mrb/scripts/initialize/post.rb    2015-02-05 18:39:58 +0900 (7110437)
@@ -2,6 +2,8 @@ require "error"
 
 require "context"
 
+require "writer"
+
 require "database"
 require "command"
 require "table_cursor"

  Modified: lib/mrb/scripts/sources.am (+2 -1)
===================================================================
--- lib/mrb/scripts/sources.am    2015-02-05 18:30:20 +0900 (9c64b1d)
+++ lib/mrb/scripts/sources.am    2015-02-05 18:39:58 +0900 (fa90c59)
@@ -20,4 +20,5 @@ RUBY_SCRIPT_FILES =				\
 	scan_info.rb				\
 	scan_info_builder.rb			\
 	scan_info_data.rb			\
-	table_cursor.rb
+	table_cursor.rb				\
+	writer.rb

  Added: lib/mrb/scripts/writer.rb (+15 -0) 100644
===================================================================
--- /dev/null
+++ lib/mrb/scripts/writer.rb    2015-02-05 18:39:58 +0900 (a8905c0)
@@ -0,0 +1,15 @@
+module Groonga
+  class Writer
+    def array(name, n_elements)
+      open_array(name, n_elements)
+      yield
+      close_array
+    end
+
+    def map(name, n_elements)
+      open_map(name, n_elements)
+      yield
+      close_map
+    end
+  end
+end
-------------- next part --------------
HTML����������������������������...
Download 



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