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