[Groonga-commit] ranguba/rroonga at 51b4daa [master] Add Expression#inspect again

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Mar 22 17:45:45 JST 2015


Kouhei Sutou	2015-03-22 17:45:45 +0900 (Sun, 22 Mar 2015)

  New Revision: 51b4daad83f42698d29310af9a62ecd771952062
  https://github.com/ranguba/rroonga/commit/51b4daad83f42698d29310af9a62ecd771952062

  Message:
    Add Expression#inspect again
    
    Because Object#inspect doesn't use grn_inspect().

  Modified files:
    ext/groonga/rb-grn-expression.c
    test/test-column.rb
    test/test-expression.rb

  Modified: ext/groonga/rb-grn-expression.c (+42 -0)
===================================================================
--- ext/groonga/rb-grn-expression.c    2015-03-22 17:33:28 +0900 (0db3550)
+++ ext/groonga/rb-grn-expression.c    2015-03-22 17:45:45 +0900 (78356e6)
@@ -107,6 +107,45 @@ rb_grn_expression_initialize (int argc, VALUE *argv, VALUE self)
     return Qnil;
 }
 
+static VALUE
+rb_grn_expression_inspect (VALUE self)
+{
+    grn_ctx *context = NULL;
+    grn_obj *expression;
+    grn_obj inspected;
+    VALUE rb_inspected;
+
+    rb_grn_expression_deconstruct(SELF(self), &expression, &context,
+                                  NULL, NULL,
+                                  NULL, NULL, NULL);
+
+    rb_inspected = rb_str_new_cstr("");
+    rb_grn_object_inspect_header(self, rb_inspected);
+
+    GRN_TEXT_INIT(&inspected, 0);
+    grn_inspect(context, &inspected, expression);
+    grn_bulk_truncate(context, &inspected, GRN_TEXT_LEN(&inspected) - 2);
+    {
+        size_t prefix_length;
+        const char *content;
+        size_t content_length;
+
+        prefix_length = strlen("#<expr");
+        content = GRN_TEXT_VALUE(&inspected) + prefix_length;
+        content_length = GRN_TEXT_LEN(&inspected) - prefix_length;
+        rb_str_concat(rb_inspected,
+                      rb_grn_context_rb_string_new(context,
+                                                   content,
+                                                   content_length));
+    }
+
+    GRN_OBJ_FIN(context, &inspected);
+
+    rb_grn_object_inspect_footer(self, rb_inspected);
+
+    return rb_inspected;
+}
+
 /*
  * _expression_ で使用可能な変数を作成する。
  *
@@ -792,6 +831,9 @@ rb_grn_init_expression (VALUE mGrn)
     rb_define_method(rb_cGrnExpression, "initialize",
                      rb_grn_expression_initialize, -1);
 
+    rb_define_method(rb_cGrnExpression, "inspect",
+                     rb_grn_expression_inspect, 0);
+
     rb_define_method(rb_cGrnExpression, "define_variable",
                      rb_grn_expression_define_variable, -1);
     rb_define_method(rb_cGrnExpression, "append_object",

  Modified: test/test-column.rb (+8 -12)
===================================================================
--- test/test-column.rb    2015-03-22 17:33:28 +0900 (ce9f9ab)
+++ test/test-column.rb    2015-03-22 17:45:45 +0900 (7374994)
@@ -170,7 +170,7 @@ class ColumnTest < Test::Unit::TestCase
                    record["body"]
                  end)
     assert_equal(<<-INSPECTED.chomp, result.expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
     $1:#<record:hash:Posts id:(no value)>
   },
@@ -178,8 +178,7 @@ class ColumnTest < Test::Unit::TestCase
     0:<get_value(), modify:2, value:#<column:var_size Posts.body range:Text type:scalar compress:none>>,
     1:<push(), modify:0, value:"drive">,
     2:<match(), modify:0, value:(NULL)>
-  }
->>
+  }>
     INSPECTED
   end
 
@@ -210,7 +209,7 @@ class ColumnTest < Test::Unit::TestCase
                    record["body"]
                  end)
     assert_equal(<<-INSPECTED.chomp, result.expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
     $1:#<record:hash:Posts id:(no value)>
   },
@@ -218,8 +217,7 @@ class ColumnTest < Test::Unit::TestCase
     0:<get_value(), modify:2, value:#<column:var_size Posts.body range:Text type:scalar compress:none>>,
     1:<push(), modify:0, value:"drive">,
     2:<match(), modify:0, value:(NULL)>
-  }
->>
+  }>
     INSPECTED
   end
 
@@ -237,7 +235,7 @@ class ColumnTest < Test::Unit::TestCase
                    record["body"]
                  end)
     assert_equal(<<-INSPECTED.chomp, result.expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
     $1:#<record:hash:Posts id:(no value)>
   },
@@ -246,8 +244,7 @@ class ColumnTest < Test::Unit::TestCase
     1:<get_value(), modify:2, value:#<column:var_size Posts.body range:Text type:scalar compress:none>>,
     2:<push(), modify:0, value:"drive">,
     3:<match(), modify:0, value:(NULL)>
-  }
->>
+  }>
     INSPECTED
   end
 
@@ -262,7 +259,7 @@ class ColumnTest < Test::Unit::TestCase
                    record["body"]
                  end)
     assert_equal(<<-INSPECTED.chomp, result.expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
     $1:#<record:hash:Posts id:(no value)>
   },
@@ -271,8 +268,7 @@ class ColumnTest < Test::Unit::TestCase
     1:<get_value(), modify:2, value:#<column:var_size Posts.body range:Text type:scalar compress:none>>,
     2:<push(), modify:0, value:"drive">,
     3:<match(), modify:0, value:(NULL)>
-  }
->>
+  }>
     INSPECTED
   end
 

  Modified: test/test-expression.rb (+14 -21)
===================================================================
--- test/test-expression.rb    2015-03-22 17:33:28 +0900 (7cb89a2)
+++ test/test-expression.rb    2015-03-22 17:45:45 +0900 (f9bc9f1)
@@ -78,15 +78,14 @@ class ExpressionTest < Test::Unit::TestCase
     expression.compile
 
     assert_equal(<<-INSPECTED.chomp, expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:2, value:1>,
     1:<push(), modify:0, value:1>,
     2:<plus(), modify:0, value:(NULL)>
-  }
->>
+  }>
     INSPECTED
   end
 
@@ -172,26 +171,24 @@ class ExpressionTest < Test::Unit::TestCase
                                   Groonga::Operator::PUSH,
                                   1)
         assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:0, value:#<proc:tokenizer TokenBigram arguments:[$1, $2, $3]>>
-  }
->>
+  }>
         INSPECTED
       end
 
       def test_name
         @expression.append_object(Groonga["TokenBigram"], "push", 1)
         assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:0, value:#<proc:tokenizer TokenBigram arguments:[$1, $2, $3]>>
-  }
->>
+  }>
         INSPECTED
       end
     end
@@ -207,26 +204,24 @@ class ExpressionTest < Test::Unit::TestCase
       def test_constant
         @expression.append_constant(29, Groonga::Operator::PUSH, 1)
         assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:0, value:29>
-  }
->>
+  }>
         INSPECTED
       end
 
       def test_name
         @expression.append_constant(29, "push", 1)
         assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:0, value:29>
-  }
->>
+  }>
         INSPECTED
       end
     end
@@ -243,30 +238,28 @@ class ExpressionTest < Test::Unit::TestCase
     def test_constant
       @expression.append_operation(Groonga::Operator::PLUS, 2)
       assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:2, value:29>,
     1:<push(), modify:0, value:92>,
     2:<plus(), modify:0, value:(NULL)>
-  }
->>
+  }>
       INSPECTED
     end
 
     def test_name
       @expression.append_operation("plus", 2)
       assert_equal(<<-INSPECTED.chomp, @expression.inspect)
-#<Groonga::Expression #<expr
+#<Groonga::Expression
   vars:{
   },
   codes:{
     0:<push(), modify:2, value:29>,
     1:<push(), modify:0, value:92>,
     2:<plus(), modify:0, value:(NULL)>
-  }
->>
+  }>
       INSPECTED
     end
   end
-------------- next part --------------
HTML����������������������������...
Download 



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