developer's diary

最近はc#のエントリが多いです

秀丸のマクロを他の言語で実行する(javascript編)

js.mac(秀丸から実行するマクロファイル)

if( selecting == 1 ) {
    run "cscript.exe //nologo \"C:\\Program Files\\Hidemaru\\mac\\test.js\"  < con > con ";
}

test.js(php.macから実行するjavascriptのソース)

while (!WScript.StdIn.AtEndOfLine) {
    WScript.StdOut.WriteLine(WScript.StdIn.ReadLine()+"a");
}

※秀丸のマクロのパスを「C:\Program Files\Hidemaru\mac」として記述しています。(動的にパスを編集できる方法を知ってれば是非教えてください!)

選択した範囲にたいしてjavascriptで編集されます。

例えば以下のようなデータを選択した場合。

1234
12345
123456

下記結果になります。

1234a
12345a
123456a

ソースの修正履歴を残したい場合の例(javascript編)

test.jsを下記のように編集してみる

function println(str)
{
    WScript.StdOut.WriteLine( str );
}

function print(str)
{
    WScript.StdOut.Write( str );
}

function to_date(d){
    var d = new Date();
    return d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
}

println("// --- add start --- " + to_date() + " ---#");
while (!WScript.StdIn.AtEndOfLine) {
    println(WScript.StdIn.ReadLine());
}
print("// --- add  end  --- " + to_date() + " ---#");

上記の例だと

1234
12345
123456

下記結果になります。

// --- add start --- 2008/11/29 ---#
1234
12345
123456
// --- add  end  --- 2008/11/29 ---#