1 件の投稿を表示中 (合計 2 個)
  • 作成者
    投稿
  • #31537
    Applek
    参加者

    論理矛盾の検出機能要望します。
    先ほどのbatch_list = editor.filters;に閉じがないのは不具合ではないかという指摘ですが別の視点から違う提案にします。

    batch_list = editor.filters;に閉じが無くても動作するということは、その間に記載されている置換候補は結果的には動作しないということです。

    これは本人は動かしているつもりではあるけども実質的には機能してないという意味で論理矛盾の記述箇所にはなります。
    このように論理的に矛盾する書き方をしている場合はチェック、指摘してくれる機能オプションで追加をお願いしたいです。

    例えば論理的な矛盾とは以下のような場合も該当します。

    batch_list.AddReplace(“(太郎)の(自転車)”,”$1∀”,eeFindReplaceRegExp | eeFindReplaceCase,0);

    このようなコードがあった場合キャプチャーが2回くり返してされてるにも関わらずドル箱は一個しか書かれていません。
    また二番目のキャプチャーは|がついたグループでもないために論理的な矛盾としては$2を書き忘れているだけとわかります。

    このように論理的に意味あるコードとしては矛盾する書き方があった場合はほとんどの場合においては書いているつもりだけども書き損ねているというパターンですのでこのような論理的な矛盾の書き方を検証してくれる機能かマクロの動作時に指摘してくれる機能です。

    例えば$1の忘れで行が丸ごと消えるという場合であれば、文章の一部分が不自然に欠落している場合は不自然とわかるのと違って読んでいても気がつかないのでずっと、そのマクロの置換では消滅したまま使うことになります。
    このような場合、業務用のデータの作成であれば信用を失います。
    この論理的矛盾を指摘してくれる機能によってほとんどの記載ミスは防げるということです。
    以下の場合であれば本人は書いているつもりですが”西”は変換されませんしエラーも出ませんから延々と処理されないまま気がつかないデータとして納品されます。

    batch_list = editor.filters;
    batch_list.AddReplace("西","にし",eeFindReplaceRegExp | eeFindReplaceCase,0);
    
    batch_list = editor.filters;
    batch_list.AddReplace("北","きた",eeFindReplaceRegExp | eeFindReplaceCase,0);
    document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);
    #31538
    Applek
    参加者

    EmEditorの正規表現は、固定長以外の(?<=.*?)。

    これが使えないので、常にキャプチャーで一致させる必要があります。
    そのため$1などの番号を書き忘れたときの損失は非常に損失が大きく、多く起きやすいです。

    以下の書き方が可能であれば書き忘れてもたった1文字の消失で済みますがEmEditorではできません。
    batch_list.AddReplace(“(?<=太郎.*?)の(?=犬小屋.*?。)”,””,eeFindReplaceRegExp | eeFindReplaceCase,0);

    このような理由でEmEditorは常に一致で長くキャプチャーしないといけない仕様のためミスしたときはキャプチャー部分まで消失し、損失は大きいです。
    なおさらこの機能が必要になります。

1 件の投稿を表示中 (合計 2 個)
  • このトピックに返信するにはログインしてください。