[Groonga-commit] groonga/groonga at 5e7ea7d [master] mrb: support to convert time of mrb_value to grn_bulk

Back to archive index

Naoya Murakami null+****@clear*****
Tue Oct 25 19:12:22 JST 2016


Naoya Murakami	2016-10-25 19:12:22 +0900 (Tue, 25 Oct 2016)

  New Revision: 5e7ea7d9a64c08f81f1f23684df2633362f8069f
  https://github.com/groonga/groonga/commit/5e7ea7d9a64c08f81f1f23684df2633362f8069f

  Merged 4bc8da9: Merge pull request #607 from naoa/mruby-value-to-bulk-time

  Message:
    mrb: support to convert time of mrb_value to grn_bulk

  Modified files:
    lib/mrb/mrb_bulk.c

  Modified: lib/mrb/mrb_bulk.c (+19 -3)
===================================================================
--- lib/mrb/mrb_bulk.c    2016-10-24 15:51:25 +0900 (f833c5d)
+++ lib/mrb/mrb_bulk.c    2016-10-25 19:12:22 +0900 (6fa4258)
@@ -78,9 +78,25 @@ grn_mrb_value_to_bulk(mrb_state *mrb, mrb_value mrb_value_, grn_obj *bulk)
     GRN_TEXT_SET(ctx, bulk, RSTRING_PTR(mrb_value_), RSTRING_LEN(mrb_value_));
     break;
   default :
-    mrb_raisef(mrb, E_ARGUMENT_ERROR,
-               "unsupported object to convert to bulk: %S",
-               mrb_value_);
+    {
+      struct RClass *klass;
+
+      klass = mrb_class(mrb, mrb_value_);
+      if (klass == ctx->impl->mrb.builtin.time_class) {
+        mrb_value mrb_sec;
+        mrb_value mrb_usec;
+
+        mrb_sec = mrb_funcall(mrb, mrb_value_, "to_i", 0);
+        mrb_usec = mrb_funcall(mrb, mrb_value_, "usec", 0);
+        grn_obj_reinit(ctx, bulk, GRN_DB_TIME, 0);
+        GRN_TIME_SET(ctx, bulk,
+                     GRN_TIME_PACK(mrb_fixnum(mrb_sec), mrb_fixnum(mrb_usec)));
+      } else {
+        mrb_raisef(mrb, E_ARGUMENT_ERROR,
+                   "unsupported object to convert to bulk: %S",
+                    mrb_value_);
+      }
+    }
     break;
   }
 
-------------- next part --------------
HTML����������������������������...
Download 



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