// CoffeeScript簡易コンパイラ
// CoffeeCompile.jse
// カレントをスクリプトのあるパスにする
var fso = new ActiveXObject("Scripting.FileSystemObject")
var WShell = new ActiveXObject("WScript.Shell")
WShell.CurrentDirectory = fso.GetFile(WScript.ScriptFullName).ParentFolder.Path
// coffee-script.js読み込み
try {
eval(readFile("coffee-script.js"));
} catch (e) {
WScript.Echo("coffee-script.jsが見つかりません。\n" +
"http://coffeescript.org/extras/coffee-script.js\n" +
"から取得して同じパスに配置してください。");
WScript.Quit();
}
// 引数取得
var wargv = WScript.Arguments;
if (wargv.length == 0) {
WScript.Echo("引数を指定してください。");
WScript.Quit();
}
var file = wargv.item(0);
// コンパイル
try {
var program = readFile(file);
var compiled = CoffeeScript.compile(program);
writeFile(file + ".js", compiled);
WScript.Echo("ok");
} catch (e) {
var msg = "[LINE:{line}, COL:{column}] {message}"
.replace("{line}" , e.location.first_line + 1)
.replace("{column}" , e.location.first_column + 1)
.replace("{message}", e.message);
WScript.Echo(msg);
}
function readFile(file) {
var ts = fso.OpenTextFile(file);
var text = ts.ReadAll();
ts.Close();
return text;
}
function writeFile(file, text) {
var ts = fso.OpenTextFile(file, 2, true);
ts.WriteLine(text);
ts.Close();
}