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