概要:リリースノートを統合するためのスクリプト
目的:release-9.0.sgmlやrelease-9.1.sgmlには多くの同じ記述があり
これのを他のリリースノートにコピーする作業には多くの時間が
必要だった。コピーペースト作業は手動で行う作業である必要は
無く、これを自動化する。
動作確認環境:python 2.7.8
使用方法: ./merge.py 翻訳文があるsgmlファイル(原文) 翻訳対象のsgmlファイル [翻訳対象のセクション(実質マイナーバージョン)]
動作仕様:
1.原文から<!--で始まる行を搜す
2.2行目に英文1行目があるのでこれをキーとするディクショナリを作る
3.1.の<!--からまでをリストオブジェクトとして格納し2.のvalueとする
4.翻訳対象と3.で作成したディクショナリを照合し、以降、までを
置き換える。
サンプル:
sample以下にファイルを配置しています。
release-9.0.sgml サンプル原文
release-9.1.orid.sgml 翻訳前翻訳対象
release-9.1.sgml 翻訳後はこのファイルのようになっていなければならない
実行例1)
%./mergern.py sample/release-9.0.sgml sample/release-9.1.orid.sgml
最もシンプルなケース。9.1.7をコピーする
実行例2)
%./mergern.py sample/release-9.0.sgml sample/release-9.1.orid.sgml 2
release-9.1.orid.sgmlにdummyデータを3行含ませている。9.1.6をコピーする。
3件の警告が発生する
FAQ:
1.英文の1行目だけを比較しているようですが、1行目がたまたま同じということが
あるのではないでしょうか。誤動作しませんか。
はい、可能性はあります。2行目以降も照合し、異なる場合は警告を出します。
警告が上がった場合は警告箇所を必ず確認ください。
2.HTMLの解析方法が力技です。HTMLParserやBeautifulSoupeは利用しないのでしょうか。
はい。HTMLparserでは外部参照の自動変換の問題や、バージョンごとに動作が若干
異なる可能性がありました。また、BeautifulSoupeは別途インストールの手間が必要です。
PostgreSQLのマニュアルは厳格に構造化されていたため、外部のパーサーを使わなくても
十分解析が可能と判断しました。