[Groonga-commit] groonga/groonga at fc8118a [master] Define "Groonga" module as a built-in module

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Oct 3 18:04:10 JST 2013


Kouhei Sutou	2013-10-03 18:04:10 +0900 (Thu, 03 Oct 2013)

  New Revision: fc8118af88901683e8c8a0c6a5758c2981b19960
  https://github.com/groonga/groonga/commit/fc8118af88901683e8c8a0c6a5758c2981b19960

  Message:
    Define "Groonga" module as a built-in module

  Added files:
    test/command/suite/ruby/eval/built_in_module.expected
    test/command/suite/ruby/eval/built_in_module.test
  Modified files:
    lib/ctx_impl.h
    lib/ctx_impl_mrb.c
    lib/mrb.c

  Modified: lib/ctx_impl.h (+1 -0)
===================================================================
--- lib/ctx_impl.h    2013-10-03 17:59:38 +0900 (07f1cfc)
+++ lib/ctx_impl.h    2013-10-03 18:04:10 +0900 (cb0ba0e)
@@ -178,6 +178,7 @@ struct _grn_ctx_impl {
 #ifdef GRN_WITH_MRUBY
   struct {
     mrb_state *state;
+    struct RClass *module;
   } mrb;
 #endif
 };

  Modified: lib/ctx_impl_mrb.c (+10 -0)
===================================================================
--- lib/ctx_impl_mrb.c    2013-10-03 17:59:38 +0900 (6cd9fea)
+++ lib/ctx_impl_mrb.c    2013-10-03 18:04:10 +0900 (59f4028)
@@ -20,6 +20,14 @@
 #include "ctx_impl.h"
 
 #ifdef GRN_WITH_MRUBY
+static void
+grn_ctx_impl_mrb_init_bindings(grn_ctx *ctx)
+{
+  mrb_state *mrb = ctx->impl->mrb.state;
+
+  ctx->impl->mrb.module = mrb_define_module(mrb, "Groonga");
+}
+
 void
 grn_ctx_impl_mrb_init(grn_ctx *ctx)
 {
@@ -27,8 +35,10 @@ grn_ctx_impl_mrb_init(grn_ctx *ctx)
   grn_mruby_enabled = getenv("GRN_MRUBY_ENABLED");
   if (grn_mruby_enabled && strcmp(grn_mruby_enabled, "no") == 0) {
     ctx->impl->mrb.state = NULL;
+    ctx->impl->mrb.module = NULL;
   } else {
     ctx->impl->mrb.state = mrb_open();
+    grn_ctx_impl_mrb_init_bindings(ctx);
   }
 }
 

  Modified: lib/mrb.c (+7 -0)
===================================================================
--- lib/mrb.c    2013-10-03 17:59:38 +0900 (b75e887)
+++ lib/mrb.c    2013-10-03 18:04:10 +0900 (607772e)
@@ -22,6 +22,7 @@
 #ifdef GRN_WITH_MRUBY
 # include <mruby/proc.h>
 # include <mruby/compile.h>
+# include <mruby/string.h>
 #endif
 
 #ifdef GRN_WITH_MRUBY
@@ -60,6 +61,12 @@ grn_mrb_to_grn(grn_ctx *ctx, mrb_value mrb_object, grn_obj *grn_object)
     grn_obj_reinit(ctx, grn_object, GRN_DB_INT32, 0);
     GRN_INT32_SET(ctx, grn_object, mrb_fixnum(mrb_object));
     break;
+  case MRB_TT_STRING :
+    grn_obj_reinit(ctx, grn_object, GRN_DB_TEXT, 0);
+    GRN_TEXT_SET(ctx, grn_object,
+                 RSTRING_PTR(mrb_object),
+                 RSTRING_LEN(mrb_object));
+    break;
   default :
     rc = GRN_INVALID_ARGUMENT;
     break;

  Added: test/command/suite/ruby/eval/built_in_module.expected (+4 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/ruby/eval/built_in_module.expected    2013-10-03 18:04:10 +0900 (9284ed9)
@@ -0,0 +1,4 @@
+register ruby/eval
+[[0,0.0,0.0],true]
+ruby_eval "Groonga.to_s"
+[[0,0.0,0.0],{"value":"Groonga"}]

  Added: test/command/suite/ruby/eval/built_in_module.test (+5 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/ruby/eval/built_in_module.test    2013-10-03 18:04:10 +0900 (2f3422c)
@@ -0,0 +1,5 @@
+#@on-error omit
+register ruby/eval
+#@on-error default
+
+ruby_eval "Groonga.to_s"
-------------- next part --------------
HTML����������������������������...
Download 



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