Navigation Menu

Skip to content

Commit

Permalink
mrb: support mruby Symbol -> Groonga bulk conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jun 16, 2014
1 parent 5961d3a commit 230ed7c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
14 changes: 14 additions & 0 deletions lib/mrb.c
Expand Up @@ -175,6 +175,8 @@ grn_rc
grn_mrb_to_grn(grn_ctx *ctx, mrb_value mrb_object, grn_obj *grn_object)
{
grn_rc rc = GRN_SUCCESS;
grn_mrb_data *data = &(ctx->impl->mrb);
mrb_state *mrb = data->state;

switch (mrb_type(mrb_object)) {
case MRB_TT_FALSE :
Expand All @@ -199,6 +201,18 @@ grn_mrb_to_grn(grn_ctx *ctx, mrb_value mrb_object, grn_obj *grn_object)
RSTRING_PTR(mrb_object),
RSTRING_LEN(mrb_object));
break;
case MRB_TT_SYMBOL :
{
const char *name;
int name_length;

grn_obj_reinit(ctx, grn_object, GRN_DB_TEXT, 0);
GRN_BULK_REWIND(grn_object);
GRN_TEXT_PUTC(ctx, grn_object, ':');
name = mrb_sym2name_len(mrb, mrb_symbol(mrb_object), &name_length);
GRN_TEXT_PUT(ctx, grn_object, name, name_length);
}
break;
default :
rc = GRN_INVALID_ARGUMENT;
break;
Expand Down
4 changes: 4 additions & 0 deletions test/command/suite/ruby/eval/symbol.expected
@@ -0,0 +1,4 @@
register ruby/eval
[[0,0.0,0.0],true]
ruby_eval ":symbol"
[[0,0.0,0.0],{"value":":symbol"}]
5 changes: 5 additions & 0 deletions test/command/suite/ruby/eval/symbol.test
@@ -0,0 +1,5 @@
#@on-error omit
register ruby/eval
#@on-error default

ruby_eval ":symbol"

0 comments on commit 230ed7c

Please sign in to comment.