trycode.scm用のtrycode-ruleを、Web上のオリジナルの定義から生成するための
シェルスクリプトを参考までに送ります。

オリジナルの定義はときどき更新されるので、
trycode.scmとの比較作業を楽にするためにざくっと書いてみたものです。
# 先日、trycode.scmをオリジナルの定義に合わせて修整してcommitしたときに、
# 手作業が少し面倒だったので。
エラー処理もしてないし、ad hocなスクリプトです。

gentrycoderule.sh  trycode.scm用のtrycode-ruleを生成するためのスクリプト
add3st.awk         gentrycoderule.shから使用するAWKスクリプト
difftrycode.sh     trycode.scmと生成したtrycode-ruleを比較するためのスクリプト

一時ファイルを作ったままにするので、
作業用ディレクトリを作って、そこで動かした方がよいです。

スクリプトファイルはEUC-JPにしてください。

------gentrycoderule.sh------
#!/bin/sh
# trycode.scm用のtrycode-ruleを、オリジナルの定義をWebから取得して生成する。
# 使い方: sh gentrycoderule.sh >trycode-rule
# 注意: このファイルはEUC-JPである必要あり。

wget -N http://www.m17n.org/ntakahas/npx/aggressive/tcode-qwerty.html
wget -N http://www.m17n.org/ntakahas/npx/aggressive/tcode-ex-qwerty.html
wget -N http://www.m17n.org/ntakahas/npx/aggressive/3st.html

nkf -e tcode-qwerty.html | sed -e '1,/^<pre>/d' -e '/^<\/pre>/,$d' >tc
nkf -e tcode-ex-qwerty.html | sed -e '1,/^<pre>/d' -e '/^<\/pre>/,$d' >ex
# 3st.html中の全角文字をtcode-qwerty.htmlとのマッチングのため半角に変換する。
# 日本語対応sedが必要(あるいは日本語対応trでもOK)。
# nkf -Zは漢字部分の,.が,.に変換されてしまうので、単純には使えない。
nkf -e 3st.html | sed -e '1,/^----------/d' -e '/^<\/pre>/,$d' \
| sed -e 'y/?!()%012345689/?!()%012345689/' >3st

cat tc ex >tcex
awk -f add3st.awk tcex
------gentrycoderule.sh------

------add3st.awk------
#!/bin/awk -f
# T-Codeのコード表にTry-Codeの3ストローク定義を追加して、
# trycode.scm用の形式で出力する。
BEGIN {
        while (getline < "3st" > 0) {
                threestroke[$1] = $2;
        }
}
{
        st2 = $1;
        gsub(/./, " \"&\"", st2);
        st2 = substr(st2, 2); # 余分なスペースを削除

        tc = $2;

        st3 = "\" \" " st2;
        tc3 = threestroke[tc];
        if (tc3 == "") {
                tc3 = "■"; # 空定義。3ストローク用定義自体も無しでいいかも。
        }

        printf("    (((%s))(\"%s\")) (((%s))(\"%s\"))\n", st2, tc, st3, tc3);
}
------add3st.awk------

------difftrycode.sh------
#!/bin/sh
# diff trycode.scm and trycode-rule generated by gentrycoderule.sh
# Usage: sh difftrycode.sh /usr/local/share/uim/trycode.scm trycode-rule

pickuprule () {
        sed -e "1,/^  '(/d" -e '/))))$/,$d'
}

f1=`basename "$1"`.tmp1
f2=`basename "$2"`.tmp2
cat "$1" | pickuprule | sort >"$f1"
cat "$2" | sort >"$f2"
diff "$f1" "$f2"
------difftrycode.sh------

-- 
木原 英人 / KIHARA, Hideto / 
[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]
http://www1.interq.or.jp/~deton/


--~--~---------~--~----~------------~-------~--~----~
Google Groups "uim-ja" group
uim-ja@googlegroups.com
http://groups.google.com/group/uim-ja/about
-~----------~----~----~----~------~----~------~--~---

メールによる返信