blob: ae773541eedddfde39f4ae175c877319c89d199c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
module Groonga
module ExpressionRewriters
@rewriters = {}
class << self
def register(name, rewriter_class)
@rewriters[name] = rewriter_class
end
def enabled?
rewriters_table_name =
Config["expression_rewriter.table"] || "expression_rewriters"
rewriters_table = Context.instance[rewriters_table_name]
return false if rewriters_table.nil?
return false if rewriters_table.empty?
true
end
def classes
rewriters_table_name =
Config["expression_rewriter.table"] || "expression_rewriters"
rewriters_table = Context.instance[rewriters_table_name]
return [] if rewriters_table.nil?
rewriters_table.collect do |id|
record = Record.new(rewriters_table, id)
name = record.key
rewriter = @rewriters[name]
if rewriter.nil?
plugin_name = record.plugin_name.value
require plugin_name
rewriter = @rewriters[name]
raise "unknown rewriter: <#{name}>:<#{plugin_name}>" if rewriter.nil?
end
rewriter
end
end
end
end
end
|