X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fruby.git;a=blobdiff_plain;f=chise%2Flibchise_r.rb;fp=chise%2Flibchise_r.rb;h=dbc421d8de47a0d1275e8a91de60999db70d9ead;hp=afe3510eb5528f2ec354753c27e61e87047d9a5c;hb=5dac29593fc01dc74c6ddbb2f45830e417484101;hpb=af4c778a680e85cb5638634f257d0a6b98c4fa67 diff --git a/chise/libchise_r.rb b/chise/libchise_r.rb index afe3510..dbc421d 100755 --- a/chise/libchise_r.rb +++ b/chise/libchise_r.rb @@ -11,11 +11,12 @@ module CHISE module ChiseValue; end module TableAccessModule; end - class DataSource + class DataSource_R NONE = 0 Berkeley_DB = 1 + DB_DIR = "/cygdrive/c/chise/chise-db" - def initialize(type=Berkeley_DB, loc=nil, subtype=0, modemask=0755) + def initialize(type=Berkeley_DB, loc=DB_DIR, subtype=0, modemask=0755) @type = type loc = Config.instance.db_dir if loc.nil? @location = loc.path @@ -24,24 +25,22 @@ module CHISE @fdb = {} @cdb = {} end - attr_reader :type, :location, :subtype, :modemask + attr_reader :type, :subtype, :modemask + + def close() end def get_feature(f) - @fdb[f] = FeatureTable.new(self, f) if @fdb[f].nil? + @fdb[f] = Feature.new(self, f) if @fdb[f].nil? @fdb[f] end def get_ccs(ccs) - @cdb[ccs] = CCSTable.new(self, ccs) if @cdb[ccs].nil? + @cdb[ccs] = CCS.new(self, ccs) if @cdb[ccs].nil? @cdb[ccs] end - def each_feature - each_entry("character/feature") {|f| yield(f) } - end - - def each_ccs - each_entry("character/by_feature") {|f| yield(f) } + def each_feature_name + each_entry("character/feature") {|f| yield f } end def load_feature(name, cid) @@ -72,23 +71,11 @@ module CHISE @name = name dbdir = dir + cat + keytype - #qp dbdir.to_s - #FileUtils.mkdir_p(dbdir.to_s) unless dbdir.directory? - #qp dbdir.to_s, "2" path = dbdir + name.path.escape.escape_win_filename - #qp path.basename.to_s, amask, mmask -# if /test/ =~ path.to_s -# qp path.to_s, amask -# end if amask == BDB::RDONLY - #raise unless path.exist? - #raise unless FileTest.exist?(path.to_s) - v = FileTest.exist?(path.to_s) - #return unless v - raise unless v + raise unless FileTest.exist?(path.to_s) end -# @db = BDB::Hash.open(path.to_s, nil, amask, mmask) @db = BDB::Hash.open(path.to_s, nil, amask) at_exit { close @@ -100,9 +87,8 @@ module CHISE begin @db.sync @db.close - #p ["AttributeTable: close", @name] rescue => e - #p e + p e end end @@ -140,14 +126,12 @@ module CHISE @db = AttributeTable.new(@ds.location, @category, @keyvalue, @name, @access, @ds.modemask) rescue => e - #qp e @db = nil end - #raise if @db.nil? end end - class FeatureTable + class Feature_R include ChiseValue include TableAccessModule @@ -160,7 +144,7 @@ module CHISE def get_value(cid) setup_db return nil if @db.nil? - parse_value(@db.get(format_char_id(cid))) + @db.get(format_char_id(cid)) end def set_value(cid, value) @@ -169,7 +153,7 @@ module CHISE @db.put(format_char_id(cid), value) end - def each + def each_char setup_db raise "@db is nil." if @db.nil? @db.each {|k, v| @@ -178,7 +162,7 @@ module CHISE end end - class CCSTable + class CCS_R include ChiseValue include TableAccessModule @@ -204,22 +188,12 @@ module CHISE setup_db raise "@db is nil." if @db.nil? @db.each {|k, v| - yield(parse_value(k), parse_c_string(v)) + yield(k, parse_c_string(v)) } end end module ChiseValue - def parse_value(v) - return v if v.nil? - #return v if v.kind_of?(Integer) - return v.to_i if /\A\d+\Z/ =~ v # number? - return $1 if /\A"(.+)"\Z/ =~ v # remove surrounding " - #return v.sub(/\A\?/, "") if v =~ /\A\?/ # remove ? in the head - #return parse_sexp(v) if v =~ /\A\(.+\)\Z/ # parse sexp # not yet - v - end - def parse_c_string(str) return nil if str.nil?