i
[chise/ruby.git] / chise / chisedb.rb
1 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
2
3 require "singleton"
4 require "chise/rbchise"
5
6 module CHISE
7   class ChiseDB
8     include Singleton
9
10     def initialize
11       @ds = DataSource.new
12     end
13
14     def location() @ds.location; end
15
16     def get_feature(f)
17       @ds.get_feature(f)
18     end
19
20     def get_ccs(c)
21       @ds.get_ccs(c)
22     end
23
24     def decode_char(name, cid)
25       v = @ds.decode_char(name, cid)
26       v
27     end
28
29     def load_feature(name, cid)
30       v = @ds.load_feature(name, cid)
31       v = normalize_value(v)
32       v
33     end
34
35     def each_feature
36       @ds.each_feature {|f|
37         yield f
38       }
39     end
40
41     private
42
43     def normalize_value(v)
44       return v if v.nil?
45       return v.to_i if /\A\d+\Z/ =~ v # number?
46       return $1 if /\A"(.+)"\Z/ =~ v # remove surrounding "
47       #return v.sub(/\A\?/, "") if v =~ /\A\?/ # remove ? in the head
48       #return parse_sexp(v) if v =~ /\A\(.+\)\Z/ # parse sexp # not yet
49       v
50     end
51   end
52 end