« ジューンベリーの実がなった | トップページ | アジサイの色気 »

2017/06/10

Refsort/Ruby v2.52 Released

辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11).もう仕様は落ち着いていて機能の追加をするつもりはなく,細々とバグのメンテナンスを行っている状態です.

前回のリリースはつい最近,今年2017年の4月だったのですが,埋め込みマイルストーンの機能拡張でもやろうかと思ってスクリプトをいじっているうちに,私の理解不足から正規表現にバグがあることが発覚しましたので,慌てて応急処置をとったのが今回のリリースです.

幸いなことに,私がこれまでリリースした辞書ファイルを使う限りにおいては,このバグが顕在化することはなく人畜無害なのですが,とにかく明瞭なバグなので修正版をリリースします.

どういう箇所かというと,辞書ファイルを読み込んだり最終的な出力処理を行うときに,埋め込みマイルストーンを探す必要があるのですが,このときに正規表現内でキャプチャと後方参照を使います.その後方参照を文字クラスの中でも使えると誤解していたのが間違いでした.例えば以下のような表現です.

/^(#!m\s*(\S)\2*[^\\2][^#]*)/

ここで \2 というのは (\S) でキャプチャした非空白文字をそのあとで参照するためのものなのですが,これを文字クラス [...] の中でも使えると誤解していました.これは間違いなので,以下のように修正しました.

/^(#!m\s*(\S)\2*(?!\2)\S[^#]*)/

ここで,(?!\2)\S というのがミソで,これは否定先読みという表現.詳しい説明は省きますが,\2 ではない非空白文字一文字を表現したことになり,私が意図したとおりの動作をすることを確認しました.これは Ruby のユーザーズフォーラムで質問し,ある方から親切に教えていただいたので何とか修正できた次第です.

繰り返しになりますが,機能の追加は何もなく,Ruby の最新版 v2.4.1p111 で動作することを確認しています.

また近日中にユーザーズガイドを改訂してアップする予定です.

|

« ジューンベリーの実がなった | トップページ | アジサイの色気 »

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

パソコン・インターネット」カテゴリの記事

自然」カテゴリの記事

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/54612/65393597

この記事へのトラックバック一覧です: Refsort/Ruby v2.52 Released:

» Refsort/Ruby v2.62 Released [望湖庵日記 Lakeside Diary]
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12).もう仕様は落ち着いていて機能の追加をするつもりはなく,細々とバグのメンテナンスを行っ... [続きを読む]

受信: 2017/07/01 19:21

» Refsort/Ruby v2.63 Released [望湖庵日記 Lakeside Diary]
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13).もう仕様は落ち着いていて機能の追加をするつもりはなく,細々とバグのメンテナン... [続きを読む]

受信: 2017/07/02 07:59

» Refsort/Ruby v2.70 Released [望湖庵日記 Lakeside Diary]
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14).もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)なく,細... [続きを読む]

受信: 2017/07/09 14:24

» Refsort/Ruby 2.80 Released [望湖庵日記 Lakeside Diary]
辞書参照型ソーティングフィルターをスクリプト言語 Ruby で実装した Refsort/Ruby の開発を10年以上続けています(例えば新しいほうから順に *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14 *15).もう仕様は落ち着いていて機能の追加をするつもりは(ほとんど)... [続きを読む]

受信: 2017/10/28 15:11

« ジューンベリーの実がなった | トップページ | アジサイの色気 »