X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=chise%2Fcharacter.rb;h=6fb8fbfad6824989ce28aa630a4934bae0706f10;hb=98b534b0449bdeedcba40a1f692764569fe63ac7;hp=190792f21421d363b668c70f121041f30e5cc8ed;hpb=ffce8c4eb4a667debd47bfe237de4588414b0bb4;p=chise%2Fruby.git diff --git a/chise/character.rb b/chise/character.rb index 190792f..6fb8fbf 100755 --- a/chise/character.rb +++ b/chise/character.rb @@ -4,6 +4,8 @@ require "singleton" require "chise/parser" require "chise/chisedb" require "chise/iconv" +require "chise/utf8" +require "chise/ids" module CHISE class CharacterFactory # generate Character object and cache them @@ -33,16 +35,21 @@ module CHISE end class Character + include UTF8Value + include CharacterIDC + include CharacterIDS + def initialize(char_id) raise if char_id.nil? - raise unless char_id.is_a?(Fixnum) # char_id sure is a Fixnum. - raise if char_id < 0 # char_id sure is a positive value. + raise unless char_id.kind_of?(Integer) # make sure char_id is Integer. + raise if char_id < 0 # make sure char_id is positive. @char_id = char_id @char_id.freeze - @utf8_mcs = CHISE.i_tou8(@char_id) + # @utf8_mcs = CHISE.i_tou8(@char_id) + @utf8_mcs = itou8(@char_id) @utf8_mcs.freeze @feature = {} - @check_all_done = nil + # @check_all_done = nil end attr_reader :char_id attr_reader :utf8_mcs @@ -83,8 +90,8 @@ module CHISE def []=(k,v) f = normalize_feature_name(k) cd = ChiseDB.instance - ft = cd.get_feature(f) - ft.set_value(@char_id, v) + feature = cd.get_feature(f) + feature.set_value(@char_id, v) @feature[f] = v; end @@ -106,11 +113,35 @@ module CHISE en.to_er(self) end + def each_feature + cd = ChiseDB.instance + #return + cd.each_feature_name {|f| + #p f + feature = cd.get_feature(f) + begin + v = feature.get_value(@char_id) + next if v.nil? + yield(f, v) + ensure + feature.close # important + end + } + end + + def hash_feature + h = {} + each_feature {|k, v| + h[k] = v + } + h + end + private def get_feature(f) cd = ChiseDB.instance - cd.load_feature(f, @char_id) + cd.load_feature(@char_id, f) end def normalize_feature_name(a) @@ -122,5 +153,6 @@ module CHISE a = a.sub(/\Afrom-/, "<-") a end + end end