def initialize
@location = CHISE::DataSource::DB_DIR.path
- @ds = DataSource.new(CHISE::DataSource::Berkeley_DB, @location.to_s, 0, 0755)
+ @ds = nil
+ setup_ds
@feature_db = {}
@ccs_db = {}
@byids_db = {}
end
attr_reader :ds, :location
+ def setup_ds
+ return if @ds
+ @ds = DataSource.new(CHISE::DataSource::Berkeley_DB, @location.to_s, 0, 0755)
+ end
+
def close
# @ds.close if @ds # do not close for now
+ # @ds = nil
end
def each_feature_name()
+# setup_ds
@ds.each_feature_name {|f|
next if f.to_s == "." || f.to_s == ".."
next if f.to_s =~ /\.txt\Z/
end
def each_ccs
+# setup_ds
each_entry("character/by_feature") {|f| yield(f) }
end
def get_feature(name)
+# setup_ds
@feature_db[name] = FeatureDB.new(self, name) if @feature_db[name].nil?
@feature_db[name]
end
def load_feature(cid, name)
+# setup_ds
feature = get_feature(name)
feature.get_value(cid)
end
def get_ccs(name)
+# setup_ds
@ccs_db[name] = CCS_DB.new(self, name) if @ccs_db[name].nil?
@ccs_db[name]
end
def decode_char(ccs, code_point)
+# setup_ds
ccsdb = get_ccs(ccs)
ccsdb.decode(code_point)
end
def get_by_ids_db(n)
+# setup_ds
@byids_db[n] = ByIDS_DB.new(self, n) if @byids_db[n].nil?
@byids_db[n]
end
module TableManagementModule
def to_hash
+ sync # add.
h = {}
each_char {|k, v| h[k] = v }
h
}
end
def setup_db(w) @feature.setup_db(w); end
- def sync() @feature.sync(); end
+ def sync
+ #qp "sync"
+ @feature.sync
+ end
alias close sync
def set_value(cid, value)