ujimushiの日記: 車輪の再発明 bushu.rev→bushu.expand(旧バージョン)
最新の一つ手前のソースの「tcode-bushu-expand-all」をrubyで書いてみました。下のソースをコピペして 「bushu.rev2expand.rb」とかで保存して,「ruby bushu.rev2expand.rb bushu.rev >bushu.expand」 ぐらいで旧バージョンの「tcode-bushu-expand-all」の変換が再現できると思います。
#!/usr/bin/ruby
# coding: utf-8
# 部首テーブルを分解する定義
def henkan(str, tbl)
rv = ''
str.each_char { | c | rv += (tbl[c] ? tbl[c] : c) }
rv = henkan(rv, tbl) if str != rv
rv
end
# bushu.revを全行読み込み
lines = IO.readlines(ARGV[0])
# 部首テーブル定義
h = {}
lines.each do |str|
h[str[0]] = str[1, 4].chomp unless h[str[0]]
end
# 未処理の文字を部首に分解して出力(重複があると二つ目以降を無視)
flag = {}
lines.each do |str|
printf("%s%s\n", str[0], henkan(str[1, 4].chomp, h)) unless flag[str[0]]
flag[str[0]] = true
end
最新バージョンはbushu.help対応のコードが入ってるのでどんな動きか ぼちぼち解析してみたいですが,仕事が忙しくなってきたのでいつになることやら という感じです。
車輪の再発明 bushu.rev→bushu.expand(旧バージョン) More ログイン