高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Ginnieを使ってみる

今まで別のエディタを使っていましたが、やはりスクリプト実行機能がないとつらいと感じるときがあります。そのため、以前から気になっていた以下のソフトを使ってみました。

まだどんなものかは分かりませんが、JScriptやその他のスクリプト言語を使ってスクリプトが書けるし、あとはまだやれて無いですがイベントハンドラを作ったり、ユーザーサイドでドッキングウィンドウなどを作れるみたいですし、なかなか良さそうな感じです。
細かいところは多少気になるところもありますが、スクリプトで補強することも出来そうですからね、シェアウェア版を購入するのも良いかもしれません。まあ、何よりもう少し使って様子を見ますが。

さて早速、現在開いているファイルをインタプリタで開いて実行するというスクリプトを作成してみました。まだRubyJavaScriptにしか対応していませんし、ファイルは有無を言わさずテンポラリフォルダに保存してから実行するので(他のファイルをインポートするときにエラーが出る)、改善の余地はありそうです。
ただ、Rubyならぱぱっと空白のエディタにコードを書いて、irbの代わりみたいにも使えるので結構これだけでも便利。

// 今開いているファイルをそれぞれのエンジンで
var doc = Documents.NewDocument()
var fn;
switch(doc.DocumentType)
{
  case "RubyScript":
    runFile("ruby", SaveTempFile("rb"));
    break;
  case "JScript":
    runFile("cscript", SaveTempFile("js"));
    break;
}
App.Quit();

function SaveTempFile(ext)
{
  var fn = App.GetSpecialDir("TEMP") + "\\" + "TempFile." + ext;
  var fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.createTextFile(fn, true, false);
  f.write(doc.caret.text);
  f.close();
  return fn;
}

function runFile(execName, fileName)
{
  var shell = new ActiveXObject("WScript.Shell");
  var command = "cmd /C " + execName + ' "' + fileName + '" & pause';
  shell.run(command);
}

Outputウィンドウを使わずあえてcmd /Cにコマンドを渡して実行するようにしたのは、標準入力を必要とする場合に対応するため。Outputウィンドウのないフリー版でも使えるようにするためというわけではありませんw