rroonga 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS.ja.rdoc +7 -0
- data/NEWS.rdoc +7 -0
- data/README.ja.rdoc +2 -2
- data/README.rdoc +2 -2
- data/ext/groonga/mkmf.log +1 -1
- data/ext/groonga/rb-grn-context.c +10 -4
- data/ext/groonga/rb-grn-plugin.c +134 -0
- data/ext/groonga/rb-grn.h +13 -3
- data/ext/groonga/rb-groonga.c +2 -1
- data/html/index.html +1 -1
- data/lib/groonga/context.rb +18 -1
- data/rroonga-build.rb +2 -2
- data/test/test-plugin.rb +29 -0
- metadata +6 -4
data/NEWS.ja.rdoc
CHANGED
data/NEWS.rdoc
CHANGED
data/README.ja.rdoc
CHANGED
data/README.rdoc
CHANGED
data/ext/groonga/mkmf.log
CHANGED
@@ -63,7 +63,7 @@ checked program was:
|
|
63
63
|
"gcc -o conftest -I. -I/usr/lib/ruby/1.8/x86_64-linux -I/home/kou/work/ruby/rroonga.18/ext/groonga -fno-strict-aliasing -g -g -O2 -fPIC -Wall -I/tmp/local/include/groonga conftest.c -L. -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/tmp/local/lib -lgroonga -lruby1.8-static -lgroonga -lpthread -lrt -ldl -lcrypt -lm -lc"
|
64
64
|
conftest.c: In function ‘t’:
|
65
65
|
conftest.c:5: warning: implicit declaration of function ‘rb_errinfo’
|
66
|
-
/tmp/
|
66
|
+
/tmp/cclVRR3N.o: In function `t':
|
67
67
|
/home/kou/work/ruby/rroonga.18/ext/groonga/conftest.c:5: undefined reference to `rb_errinfo'
|
68
68
|
collect2: ld returned 1 exit status
|
69
69
|
checked program was:
|
@@ -569,16 +569,22 @@ static VALUE
|
|
569
569
|
rb_grn_context_receive (VALUE self)
|
570
570
|
{
|
571
571
|
grn_ctx *context;
|
572
|
-
char *
|
573
|
-
unsigned
|
572
|
+
char *result = NULL;
|
573
|
+
unsigned result_size;
|
574
|
+
VALUE rb_result;
|
574
575
|
int flags = 0;
|
575
576
|
unsigned int query_id;
|
576
577
|
|
577
578
|
context = SELF(self);
|
578
|
-
query_id = grn_ctx_recv(context, &
|
579
|
+
query_id = grn_ctx_recv(context, &result, &result_size, &flags);
|
580
|
+
if (result) {
|
581
|
+
rb_result = rb_str_new(result, result_size);
|
582
|
+
} else {
|
583
|
+
rb_result = Qnil;
|
584
|
+
}
|
579
585
|
rb_grn_context_check(context, self);
|
580
586
|
|
581
|
-
return rb_ary_new3(2, UINT2NUM(query_id),
|
587
|
+
return rb_ary_new3(2, UINT2NUM(query_id), rb_result);
|
582
588
|
}
|
583
589
|
|
584
590
|
static const char *
|
@@ -0,0 +1,134 @@
|
|
1
|
+
/* -*- c-file-style: "ruby" -*- */
|
2
|
+
/*
|
3
|
+
Copyright (C) 2011 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
|
5
|
+
This library is free software; you can redistribute it and/or
|
6
|
+
modify it under the terms of the GNU Lesser General Public
|
7
|
+
License version 2.1 as published by the Free Software Foundation.
|
8
|
+
|
9
|
+
This library is distributed in the hope that it will be useful,
|
10
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
Lesser General Public License for more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU Lesser General Public
|
15
|
+
License along with this library; if not, write to the Free Software
|
16
|
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include "rb-grn.h"
|
20
|
+
|
21
|
+
#define SELF(object) (RVAL2GRNCONTEXT(object))
|
22
|
+
|
23
|
+
static VALUE cGrnPlugin;
|
24
|
+
|
25
|
+
/*
|
26
|
+
* Document-class: Groonga::Plugin
|
27
|
+
*
|
28
|
+
* プラグイン。現在のところ、Rubyでgroongaのプラグインを作成
|
29
|
+
* することはできず、Cで作成された既存のプラグインを登録する
|
30
|
+
* ことができるだけです。
|
31
|
+
*/
|
32
|
+
|
33
|
+
grn_id
|
34
|
+
rb_grn_plugin_from_ruby_object (VALUE object)
|
35
|
+
{
|
36
|
+
RbGrnPlugin *rb_grn_plugin;
|
37
|
+
|
38
|
+
if (!RVAL2CBOOL(rb_obj_is_kind_of(object, cGrnPlugin))) {
|
39
|
+
rb_raise(rb_eTypeError, "not a groonga plugin");
|
40
|
+
}
|
41
|
+
|
42
|
+
Data_Get_Struct(object, RbGrnPlugin, rb_grn_plugin);
|
43
|
+
if (!rb_grn_plugin)
|
44
|
+
rb_raise(rb_eGrnError, "groonga plugin is NULL");
|
45
|
+
return rb_grn_plugin->id;
|
46
|
+
}
|
47
|
+
|
48
|
+
void
|
49
|
+
rb_grn_plugin_fin (grn_id id)
|
50
|
+
{
|
51
|
+
}
|
52
|
+
|
53
|
+
static void
|
54
|
+
rb_grn_plugin_free (void *pointer)
|
55
|
+
{
|
56
|
+
RbGrnPlugin *rb_grn_plugin = pointer;
|
57
|
+
|
58
|
+
xfree(rb_grn_plugin);
|
59
|
+
}
|
60
|
+
|
61
|
+
static VALUE
|
62
|
+
rb_grn_plugin_alloc (VALUE klass)
|
63
|
+
{
|
64
|
+
return Data_Wrap_Struct(klass, NULL, rb_grn_plugin_free, NULL);
|
65
|
+
}
|
66
|
+
|
67
|
+
/*
|
68
|
+
* call-seq:
|
69
|
+
* Groonga::Plugin.register(name, options=nil)
|
70
|
+
* Groonga::Plugin.register({:path => path, :context => nil})
|
71
|
+
*
|
72
|
+
* 既存のプラグインをデータベースに登録する。
|
73
|
+
*
|
74
|
+
* _name_を指定した場合はその名前のプラグインを登録する。
|
75
|
+
*
|
76
|
+
* _path_を指定した場合はそのパスのプラグインを登録する。
|
77
|
+
*
|
78
|
+
* _options_にはハッシュでオプションを指定する。指定できるオ
|
79
|
+
* プションは以下の通り。
|
80
|
+
*
|
81
|
+
* [+:context+]
|
82
|
+
* データベースを結びつけるコンテキスト。省略すると
|
83
|
+
* Groonga::Context.defaultを利用する。
|
84
|
+
*/
|
85
|
+
static VALUE
|
86
|
+
rb_grn_plugin_s_register (int argc, VALUE *argv, VALUE klass)
|
87
|
+
{
|
88
|
+
const char *name = NULL, *path = NULL;
|
89
|
+
VALUE rb_options, rb_name = Qnil, rb_path, rb_context;
|
90
|
+
grn_ctx *context;
|
91
|
+
|
92
|
+
if (argc >= 1) {
|
93
|
+
rb_name = rb_check_string_type(argv[0]);
|
94
|
+
}
|
95
|
+
|
96
|
+
if (NIL_P(rb_name)) {
|
97
|
+
rb_scan_args(argc, argv, "01", &rb_options);
|
98
|
+
rb_grn_scan_options(rb_options,
|
99
|
+
"path", &rb_path,
|
100
|
+
"context", &rb_context,
|
101
|
+
NULL);
|
102
|
+
path = StringValueCStr(rb_path);
|
103
|
+
} else {
|
104
|
+
rb_scan_args(argc, argv, "11", &rb_name, &rb_options);
|
105
|
+
rb_grn_scan_options(rb_options,
|
106
|
+
"context", &rb_context,
|
107
|
+
NULL);
|
108
|
+
name = StringValueCStr(rb_name);
|
109
|
+
}
|
110
|
+
|
111
|
+
if (NIL_P(rb_context)) {
|
112
|
+
rb_context = rb_grn_context_get_default();
|
113
|
+
}
|
114
|
+
context = RVAL2GRNCONTEXT(rb_context);
|
115
|
+
|
116
|
+
if (name) {
|
117
|
+
grn_plugin_register(context, name);
|
118
|
+
} else {
|
119
|
+
grn_plugin_register_by_path(context, path);
|
120
|
+
}
|
121
|
+
|
122
|
+
rb_grn_context_check(context, rb_ary_new4(argc, argv));
|
123
|
+
return Qnil;
|
124
|
+
}
|
125
|
+
|
126
|
+
void
|
127
|
+
rb_grn_init_plugin (VALUE mGrn)
|
128
|
+
{
|
129
|
+
cGrnPlugin = rb_define_class_under(mGrn, "Plugin", rb_cObject);
|
130
|
+
rb_define_alloc_func(cGrnPlugin, rb_grn_plugin_alloc);
|
131
|
+
|
132
|
+
rb_define_singleton_method(cGrnPlugin, "register",
|
133
|
+
rb_grn_plugin_s_register, -1);
|
134
|
+
}
|
data/ext/groonga/rb-grn.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2009-
|
3
|
+
Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
5
5
|
This library is free software; you can redistribute it and/or
|
6
6
|
modify it under the terms of the GNU Lesser General Public
|
@@ -68,8 +68,8 @@ RB_GRN_BEGIN_DECLS
|
|
68
68
|
#endif
|
69
69
|
|
70
70
|
#define RB_GRN_MAJOR_VERSION 1
|
71
|
-
#define RB_GRN_MINOR_VERSION
|
72
|
-
#define RB_GRN_MICRO_VERSION
|
71
|
+
#define RB_GRN_MINOR_VERSION 1
|
72
|
+
#define RB_GRN_MICRO_VERSION 0
|
73
73
|
|
74
74
|
#define RB_GRN_QUERY_DEFAULT_MAX_EXPRESSIONS 32
|
75
75
|
|
@@ -174,6 +174,14 @@ struct _RbGrnExpression
|
|
174
174
|
grn_obj *value;
|
175
175
|
};
|
176
176
|
|
177
|
+
typedef struct _RbGrnPlugin RbGrnPlugin;
|
178
|
+
struct _RbGrnPlugin
|
179
|
+
{
|
180
|
+
VALUE self;
|
181
|
+
grn_ctx *context;
|
182
|
+
grn_id id;
|
183
|
+
};
|
184
|
+
|
177
185
|
RB_GRN_VAR grn_bool rb_grn_exited;
|
178
186
|
|
179
187
|
RB_GRN_VAR VALUE rb_eGrnError;
|
@@ -213,6 +221,7 @@ RB_GRN_VAR VALUE rb_cGrnOperator;
|
|
213
221
|
RB_GRN_VAR VALUE rb_cGrnExpression;
|
214
222
|
RB_GRN_VAR VALUE rb_cGrnRecordExpressionBuilder;
|
215
223
|
RB_GRN_VAR VALUE rb_cGrnColumnExpressionBuilder;
|
224
|
+
RB_GRN_VAR VALUE rb_cGrnPlugin;
|
216
225
|
|
217
226
|
void rb_grn_init_utils (VALUE mGrn);
|
218
227
|
void rb_grn_init_exception (VALUE mGrn);
|
@@ -250,6 +259,7 @@ void rb_grn_init_expression (VALUE mGrn);
|
|
250
259
|
void rb_grn_init_expression_builder (VALUE mGrn);
|
251
260
|
void rb_grn_init_logger (VALUE mGrn);
|
252
261
|
void rb_grn_init_snippet (VALUE mGrn);
|
262
|
+
void rb_grn_init_plugin (VALUE mGrn);
|
253
263
|
|
254
264
|
VALUE rb_grn_rc_to_exception (grn_rc rc);
|
255
265
|
const char *rb_grn_rc_to_message (grn_rc rc);
|
data/ext/groonga/rb-groonga.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
|
-
Copyright (C) 2009-
|
3
|
+
Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
5
5
|
This library is free software; you can redistribute it and/or
|
6
6
|
modify it under the terms of the GNU Lesser General Public
|
@@ -143,4 +143,5 @@ Init_groonga (void)
|
|
143
143
|
rb_grn_init_expression_builder(mGrn);
|
144
144
|
rb_grn_init_logger(mGrn);
|
145
145
|
rb_grn_init_snippet(mGrn);
|
146
|
+
rb_grn_init_plugin(mGrn);
|
146
147
|
}
|
data/html/index.html
CHANGED
data/lib/groonga/context.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
3
|
+
# Copyright (C) 2010-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
#
|
5
5
|
# This library is free software; you can redistribute it and/or
|
6
6
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -51,6 +51,23 @@ module Groonga
|
|
51
51
|
Database.create(options)
|
52
52
|
end
|
53
53
|
|
54
|
+
# call-seq:
|
55
|
+
# context.register_plugin(name)
|
56
|
+
# context.register_plugin({:path => path})
|
57
|
+
#
|
58
|
+
# groongaのプラグインディレクトリにあるプラグイン_name_
|
59
|
+
# を登録する。_path_を指定するとプラグインディレクトリ以
|
60
|
+
# 外にあるプラグインを登録することができる。
|
61
|
+
def register_plugin(name_or_options)
|
62
|
+
options = {:context => self}
|
63
|
+
if name_or_options.is_a?(String)
|
64
|
+
name = name_or_options
|
65
|
+
Plugin.register(name, options)
|
66
|
+
else
|
67
|
+
Plugin.register(name_or_options.merge(options))
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
54
71
|
# call-seq:
|
55
72
|
# context.select(table, options={}) -> SelectResult
|
56
73
|
#
|
data/rroonga-build.rb
CHANGED
data/test/test-plugin.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Copyright (C) 2011 Kouhei Sutou <kou@clear-code.com>
|
2
|
+
#
|
3
|
+
# This library is free software; you can redistribute it and/or
|
4
|
+
# modify it under the terms of the GNU Lesser General Public
|
5
|
+
# License version 2.1 as published by the Free Software Foundation.
|
6
|
+
#
|
7
|
+
# This library is distributed in the hope that it will be useful,
|
8
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
+
# Lesser General Public License for more details.
|
11
|
+
#
|
12
|
+
# You should have received a copy of the GNU Lesser General Public
|
13
|
+
# License along with this library; if not, write to the Free Software
|
14
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
+
|
16
|
+
class PluginTest < Test::Unit::TestCase
|
17
|
+
include GroongaTestUtils
|
18
|
+
|
19
|
+
setup :setup_sandbox
|
20
|
+
setup :setup_database
|
21
|
+
teardown :teardown_sandbox
|
22
|
+
|
23
|
+
def test_register
|
24
|
+
context = Groonga::Context.default
|
25
|
+
assert_nil(context["suggest"])
|
26
|
+
context.register_plugin("suggest/suggest")
|
27
|
+
assert_not_nil(context["suggest"])
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rroonga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.9
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kouhei Sutou
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2011-
|
22
|
+
date: 2011-02-08 00:00:00 +09:00
|
23
23
|
default_executable:
|
24
24
|
dependencies:
|
25
25
|
- !ruby/object:Gem::Dependency
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- ext/groonga/rb-grn-operator.c
|
99
99
|
- ext/groonga/rb-grn-patricia-trie-cursor.c
|
100
100
|
- ext/groonga/rb-grn-patricia-trie.c
|
101
|
+
- ext/groonga/rb-grn-plugin.c
|
101
102
|
- ext/groonga/rb-grn-procedure.c
|
102
103
|
- ext/groonga/rb-grn-query.c
|
103
104
|
- ext/groonga/rb-grn-record.c
|
@@ -240,6 +241,7 @@ files:
|
|
240
241
|
- test/test-logger.rb
|
241
242
|
- test/test-pagination.rb
|
242
243
|
- test/test-patricia-trie.rb
|
244
|
+
- test/test-plugin.rb
|
243
245
|
- test/test-procedure.rb
|
244
246
|
- test/test-query.rb
|
245
247
|
- test/test-record.rb
|