Class: CBETA::Gaiji
- Inherits:
-
Object
- Object
- CBETA::Gaiji
- Defined in:
- lib/cbeta/gaiji.rb
Overview
存取 CBETA 缺字資料庫
Instance Method Summary collapse
-
#[](cb) ⇒ Hash{String => Strin, Array<String>}?
取得缺字資訊.
-
#initialize ⇒ Gaiji
constructor
載入 CBETA 缺字資料庫.
-
#key?(cb) ⇒ Boolean
檢查某個缺字碼是否存在.
-
#to_s(gid, cb_priority: nil, skt_priority: nil) ⇒ String
依優先序呈現缺字.
- #unicode_to_cb(unicode_char) ⇒ Object
-
#zhuyin(cb) ⇒ Array<String>
傳入缺字 CB 碼,傳回注音 array.
-
#zzs2pua(zzs) ⇒ Object
傳入 組字式,取得 PUA.
Constructor Details
#initialize ⇒ Gaiji
載入 CBETA 缺字資料庫
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cbeta/gaiji.rb', line 7 def initialize folder = File.join(File.dirname(__FILE__), '../data') fn = File.join(folder, 'cbeta_gaiji.json') @gaijis = JSON.parse(File.read(fn)) fn = File.join(folder, 'cbeta_sanskrit.json') h = JSON.parse(File.read(fn)) @gaijis.merge!(h) @zzs = {} @uni2cb = {} @gaijis.each do |k,v| if v.key? 'composition' zzs = v['composition'] @zzs[zzs] = k end if v.key? 'uni_char' c = v['uni_char'] @uni2cb[c] = k end end end |
Instance Method Details
#[](cb) ⇒ Hash{String => Strin, Array<String>}?
取得缺字資訊
Return:
{
"composition": "[得-彳]",
"unicode": "3775",
"uni_char": "㝵",
"zhuyin": [ "ㄉㄜˊ", "ㄞˋ" ]
}
48 49 50 |
# File 'lib/cbeta/gaiji.rb', line 48 def [](cb) @gaijis[cb] end |
#key?(cb) ⇒ Boolean
檢查某個缺字碼是否存在
53 54 55 |
# File 'lib/cbeta/gaiji.rb', line 53 def key?(cb) @gaijis.key? cb end |
#to_s(gid, cb_priority: nil, skt_priority: nil) ⇒ String
依優先序呈現缺字
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/cbeta/gaiji.rb', line 62 def to_s(gid, cb_priority: nil, skt_priority: nil) if cb_priority.nil? cb_priority = %w(uni_char norm_uni_char norm_big5_char composition) end if skt_priority.nil? skt_priority = %w(symbol romanized PUA) end g = @gaijis[gid] if gid.start_with? 'CB' cb_priority.each do |k| if k == 'PUA' return CBETA.pua(gid) elsif g.key? k return g[k] unless g[k].empty? end end else skt_priority.each do |k| if k == 'PUA' s = g['pua'].sub(/^U\+(.*)$/, '\1') i = s.to_i(16) return [i].pack("U") else if g.key? k return g[k] unless g[k].empty? end end end end nil end |
#unicode_to_cb(unicode_char) ⇒ Object
96 97 98 |
# File 'lib/cbeta/gaiji.rb', line 96 def unicode_to_cb(unicode_char) @uni2cb[unicode_char] end |
#zhuyin(cb) ⇒ Array<String>
傳入缺字 CB 碼,傳回注音 array
資料來源:CBETA 於 2015.5.15 提供的 MS Access 缺字資料庫
110 111 112 113 |
# File 'lib/cbeta/gaiji.rb', line 110 def (cb) return nil unless @gaijis.key? cb @gaijis[cb]['zhuyin'] end |
#zzs2pua(zzs) ⇒ Object
傳入 組字式,取得 PUA
116 117 118 119 120 |
# File 'lib/cbeta/gaiji.rb', line 116 def zzs2pua(zzs) return nil unless @zzs.key? zzs gid = @zzs[zzs] CBETA.pua(gid) end |