// 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(); }