【要望】スペースの補完機能

  1. Mery  Build: 2.1.6.4644 を使わせてもらっています。とても気に入っているのですが、ひとつお願いしたいのが
    ・日本語整形機能のひとつとして、半角語の前後にスペースを補完
    する機能の付加です。どんなものでしょうか。

     |  bach99  |  返信
  2. こんばんは、Mery をご愛用くださりありがとうございます。

    半角語 (単語?) の前後にスペースを補完ですが、正規表現で置換するようなマクロを組めば行けそうな気がします。

    ちょっと考えてみますね。

     |  Kuro  |  返信
  3. > こんばんは、Mery をご愛用くださりありがとうございます。

    > 半角語 (単語?) の前後にスペースを補完ですが、正規表現で置換するようなマクロを組めば行けそうな気がします。

    > ちょっと考えてみますね。

     早速のご返事ありがとうございます。よろしくお願いします <m(__)m>

     |  bach99  |  返信
  4. こんばんは、取り急ぎマクロを作成してみました。

    InsertSpace.js
    ------------------ ここから ------------------
    with (document.selection) {
        Replace("([0-9A-Za-z]+)([ぁ-煕]+)", "\\1 \\2", meFindNext | meFindReplaceRegExp | meReplaceAll);
        Replace("([ぁ-煕]+)([0-9A-Za-z]+)", "\\1 \\2", meFindNext | meFindReplaceRegExp | meReplaceAll);
    }
    ------------------ ここまで ------------------

    上の、ここからここまでってところの中身を InsertSpace.js という名前のファイルに保存して、Mery の上部メニュー「マクロ」→「選択」で、先ほど保存した InsertSpace.js を選択すれば、Mery にマクロ追加されます。

    上部メニューの「マクロ」→「InsertSpace.js」を選択すれば実行できます。

    英数字と全角文字の間に半角スペースを挿入します。半角記号は考慮してません。

    もっとスマートな方法があるかもしれませんが・・・。
    一応、軽くテストしてみた感じだとそれっぽく動いているようです。

    参考文献: http://www.pahoo.org/e-soul/webtech/php05/php05-10-01.shtm

     |  Kuro  |  返信
  5. > こんばんは、取り急ぎマクロを作成してみました。

    > InsertSpace.js
    > ------------------ ここから ------------------
    > with (document.selection) {
    >     Replace("([0-9A-Za-z]+)([ぁ-煕]+)", "\\1 \\2", meFindNext | meFindReplaceRegExp | meReplaceAll);
    >     Replace("([ぁ-煕]+)([0-9A-Za-z]+)", "\\1 \\2", meFindNext | meFindReplaceRegExp | meReplaceAll);
    > }
    > ------------------ ここまで ------------------

    あかん
    例 foo熊
    > 参考文献: http://www.pahoo.org/e-soul/webtech/php05/php05-10-01.shtm
    上のサイトの正規表現はShift-JIS用のパターンのようです。
    まぁ、正規表現を使った置換一発で済むんだけどね。
    検索:「([半角文字](?=[^半角文字+空白類])|[^半角文字+空白類](?=[半角文字]))」
    置換:「\1 」

     |  foo  |  返信
  6. てか、Shift-JISでもあかんのか。
    「熙」を「煕」と間違えてる

     |  foo  |  返信
  7. アドバイスありがとうございます。
    なるほど、それは見落としておりました。

    > 検索:「([半角文字](?=[^半角文字+空白類])|[^半角文字+空白類](?=[半角文字]))」

    確かにわざわざ[全角文字]を用意しなくても半角以外ってことにすれば良いですね。
    それに正規表現の置換で一発で行けそうなのでマクロは必要なかったですね。

     |  Kuro  |  返信
  8. > アドバイスありがとうございます。
    > なるほど、それは見落としておりました。

    > > 検索:「([半角文字](?=[^半角文字+空白類])|[^半角文字+空白類](?=[半角文字]))」

    > 確かにわざわざ[全角文字]を用意しなくても半角以外ってことにすれば良いですね。
    > それに正規表現の置換で一発で行けそうなのでマクロは必要なかったですね。
     ・・・・・・・・・・
     いろいろお考えいただきありがとうございます。でも、当方 「マクロ、正規表現」 どちらもさっぱり  (^_^.)  「ツール」→「オプション」 あたりのチェックオンで使えるようにしてもらえると、とってもとってもありがたいんですが <m(__)m>

     |  bach99  |  返信
  9. マクロとプラグイン(※要 .NET Framework 4.0)を用意しました.
    http://merysmacro.up.seesaa.net/plugins/InsertSpace.zip
    ダウンロード,解凍し,Mery のインストールフォルダに上書きして下さい.

    プラグインは自動で動作するようになっています.
    全角⇒半角または半角⇒全角入力時に自動で半角スペースを挿入します.
    ただしコピー&ペーストや既に入力済みのテキストには効果がありません.
    また後述のマクロでは対応している細かな動作設定もないので,使い勝手は微妙です.
    有効/無効を切り替える場合には,メニューの [ツール] - [プラグイン] - [整形(スペース挿入)] を選択して下さい.
    プラグインが不要な場合は,plugins フォルダから "InsertSpace.dll" と "Wrapper" フォルダを削除して下さい.

    マクロは既に入力済みの文章に対し,半角スペースを挿入する機能を持っています.
    利用する場合には,Mery の上部メニュー [マクロ] - [選択] で、My Macros 配下にある "InsertSpace.js" を選択してから,メニューの [マクロ] - [整形(スペース挿入)] を選びます.

    "insertSpace.js" を編集することで,動作を変更することができます.
    4 行目 ignoreNext と,7 行目 ignorePrevious は特定文字の場合にスペース挿入を無効化します.(初期状態では,句読点の次に半角文字があった場合はスペースを挿入しない)
    11 行目 enableSelect は,文字列を選択しているときにその選択範囲のみを対象とするか,全体を対象とするかのフラグです.

    あまりスマートな動きではないですが,お役に立てれば……

     |  ks  |  返信
  10. > マクロとプラグイン(※要 .NET Framework 4.0)を用意しました.
    http://merysmacro.up.seesaa.net/plugins/InsertSpace.zip

    中略

    > あまりスマートな動きではないですが,お役に立てれば……
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
     お書きのとおりセットしました。今後使いながら挙動を見させてもらおうと思っています。
     お手数をかけました m(__)m

     |  bach99  |  返信