grn_ctx * rb_grn_context_ensure (VALUE *context) { if (NIL_P(*context)) *context = rb_grn_context_get_default(); return SELF(*context); }
/* * call-seq: * Groonga::Plugin.register(name, options=nil) * Groonga::Plugin.register({:path => path, :context => nil}) * * 既存のプラグインをデータベースに登録する。 * * _name_ を指定した場合はその名前のプラグインを登録する。 * * _path_ を指定した場合はそのパスのプラグインを登録する。 * * _options_ にはハッシュでオプションを指定する。指定できるオ * プションは以下の通り。 * @param options [::Hash] The name and value * pairs. Omitted names are initialized as the default value. * @option options :context (Groonga::Context.default) The context * * データベースを結びつけるコンテキスト。 */ static VALUE rb_grn_plugin_s_register (int argc, VALUE *argv, VALUE klass) { const char *name = NULL, *path = NULL; VALUE rb_options, rb_name = Qnil, rb_path, rb_context; grn_ctx *context; if (argc >= 1) { rb_name = rb_check_string_type(argv[0]); } if (NIL_P(rb_name)) { rb_scan_args(argc, argv, "01", &rb_options); rb_grn_scan_options(rb_options, "path", &rb_path, "context", &rb_context, NULL); path = StringValueCStr(rb_path); } else { rb_scan_args(argc, argv, "11", &rb_name, &rb_options); rb_grn_scan_options(rb_options, "context", &rb_context, NULL); name = StringValueCStr(rb_name); } if (NIL_P(rb_context)) { rb_context = rb_grn_context_get_default(); } context = RVAL2GRNCONTEXT(rb_context); if (name) { grn_plugin_register(context, name); } else { grn_plugin_register_by_path(context, path); } rb_grn_context_check(context, rb_ary_new4(argc, argv)); return Qnil; }