Top 上へ 目次
Ver.10.3について
フィルタとか、ディレクトリ内検索とか、OR条件は;(セミコロン)を入力すれば可能なんですが、AND条件やNOT条件も欲しいと思いました。
具体的にはタグの検索機能を作ってる時に。
最近掲示板でも取り上げましたし、アンケートでも上がってましたね。
As/Rで使用しているマッチング関数は、DOSプロンプトのワイルドカードを真似したものでして、FindFirst()系やPathMatchSpec()系のAPIにそのまま渡せる文字列であるというのが特徴です。
これを拡張するということは、DOSプロンプトの仕様からはみ出すということになり、「一般的」な仕様から外れることに抵抗感はありますが、現状で機能が無くて不便なので困ったものです。
とりえあえず、こんな風に拡張しようと考えてます。
判定式の前にNOT+スペースがあったら否定条件、AND+スペースがあったらAND条件、OR+スペースがあったらOR条件という感じです。
ですから、フィルタで入力するテキストが
「NOT ファイル名 AND テスト」
と入力すると「ファイル名」を含まなくて「テスト」があるものを抽出と言うことになります。
ややこしいのはORとANDが混じる場合で
「NOT ファイル名 AND テスト OR あああ」
と入力すると「ファイル名」を含まない、かつ、「テスト」が存在する、(区切り)または「あああ」がある、が抽出条件と言うことになります。
ANDとORはそれぞれ、論理積、論理和といったほうが分かりやすいでしょうか。
要は、掛け算と足し算の優先順位と同じ扱いです。
優先順位はNOT>AND>ORで、一般的な論理式の優先順位と同じです。
あとOR条件は旧仕様というかワイルドカード指定の仕様を踏襲して「;」(セミコロン)ですが、本来はNOTやANDは本来はパスとして使えない文字を使うべきだと思います。
あえて検索させにくくするために「!」や「&」を付けるとか、わりと良くあるテクニックのひとつですし、あちらを立てればこちらが立たず・・・うーん。
というわけで、従来の動作と、新しい動作を設定で切り替えて使い分けができるようにしておきます。
拡張モードで
「NOT ファイル名 AND テスト OR NOT NOT あああ or」
を検索文字列にすると「!*ファイル名*&*テスト*;!!*あああ*;*or*」
になります。
※末尾の「or」は終端で、末尾にスペースが無いので文字として認識します。
まぁデフォルトがOFFだし、きっと使われない機能の一つになるんだろうな・・・という気もします。
今回も地味に影響範囲がでかいわりに更新履歴が一行なので、その他の項目がチマチマですね。
いくつかアンケートでダメ出しされた項目を消化しますが、簡単に対処できるものは今回で対処完了となる認識です。
おいおい、そういう意味じゃねーよとか、そこはもうちょっとこんな風にとかありましたら、ご連絡ください。
それにしても、地味な更新ばかりが続きます。
なんかこう、カタルシスが足らない気がしてなりませぬ。