« ミツバチ軍団出撃 | トップページ | アインシュタインの誕生日に »

2022/03/12

Refsort/Ruby v3.71 released

辞書参照型ソーティング・フィルタ Refsort/Ruby (新しいほうから *1 *2 *3 *5 *5)の改訂版 v3.71 をリリースしました.今回の改訂は先月リリースした v3.70 に残っていたロジックの不備を補うもので,機能的な変更はありません.

前回の改訂でコマンドライン・オプション "-E, --encoding" を導入しましたが,BOM によるエンコーディング設定との整合性が十分に取れておらず,エンコーディングの優先順位が混乱していました.今回の改訂はその優先順位を整理し,それに基づいて警告文を出す条件と文言を改めたものです.改めて書くと,エンコーディングの優先順位は

BOM > 埋め込みオプション > コマンドライン・オプション > ロケール

となります.辞書ファイルや入力ファイルで BOM が検出されれば,それに従ってエンコーディングが(実質的には UTF-8 に)設定されます.BOM がない場合,埋め込みオプションがあればそのエンコーディングが使用され,埋め込みオプションも無くてコマンドライン・オプションがあればそれが使用され,エンコーディングに関するオプションが何も指定されていなければデフォルトのロケールが使用されるということになります.

新設したコマンドライン・オプションは,辞書ファイルと入力ファイルの両方に有効な “共通エンコーディング” という概念を作ります.すると,辞書ファイルと入力ファイルが同じエンコーディング(ロケールと異なっていてもかまいません)で書かれてさえいれば,コマンドライン・オプションを付けて実行するだけで,自動的に入力ファイルと辞書ファイルの両方にそのエンコーディングが設定されます.このとき,辞書ファイルに埋め込みオプションが書かれていれば,優先順位によって共通エンコーディングは上書きされますが,それがコマンドライン・オプションと同じであれば問題は生じません.

エンコーディングをどのような手段で指定しようとも,辞書ファイルと入力ファイルのエンコーディングは同一でなければなりません.これが一致していなければ Refsort はエラーを吐いて停止します.従ってユーザーは自分がどのエンコーディングを選択しているのか,よく意識する必要があります.これはロケールの中だけの世界では注意する必要が無かったことです.

Refsort/Ruby とそれに関するコンテンツのアーカイブを Microsoft One Drive に置いています.画面右側コラムの Archive の中の Refsort/Ruby Archive をクリックしていただくと,私の OneDrive 上に設けたライブラリが開きますので,そこから過去分も含めてファイルをダウンロードすることができます. Refsort 本体の refsort.rb は refsort_v371.rb というファイル名でアップロードされていますので,ダウンロード後に refsort.rb に変更するとよいでしょう.改行コードも CR/LF になっていますので,適宜変更してお使いください.エンコーディングは US-ASCII ですので,そのままでよいでしょう.ユーザーズガイドも若干改訂されています.

| |

« ミツバチ軍団出撃 | トップページ | アインシュタインの誕生日に »

自然」カテゴリの記事

IT関連情報」カテゴリの記事

科学」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ミツバチ軍団出撃 | トップページ | アインシュタインの誕生日に »