Haxe: add C++, JS, Neko targets. Make neko default.
[jackhill/mal.git] / haxe / Step9_try.hx
index 3e841b5..8f297e0 100644 (file)
@@ -1,3 +1,4 @@
+import Compat;
 import types.Types.MalType;
 import types.Types.*;
 import types.MalException;
@@ -193,10 +194,6 @@ class Step9_try {
     }
 
     public static function main() {
-        #if js
-            #error "JS not supported yet"
-        #end
-
         // core.EXT: defined using Haxe
         for (k in Core.ns.keys()) {
             repl_env.set(MalSymbol(k), MalFunc(Core.ns[k],null,null,null,false,nil));
@@ -207,8 +204,9 @@ class Step9_try {
         },null,null,null,false,nil);
         repl_env.set(MalSymbol("eval"), evalfn);
 
-        var cmdargs = Sys.args().map(function(a) { return MalString(a); });
-        repl_env.set(MalSymbol("*ARGV*"), MalList(cmdargs));
+        var cmdargs = Compat.cmdline_args();
+        var argarray = cmdargs.map(function(a) { return MalString(a); });
+        repl_env.set(MalSymbol("*ARGV*"), MalList(argarray));
 
         // core.mal: defined using the language itself
         rep("(def! not (fn* (a) (if a false true)))");
@@ -218,22 +216,21 @@ class Step9_try {
 
 
         if (cmdargs.length > 0) {
-            rep('(load-file "${Sys.args()[0]}")');
-            Sys.exit(0);
+            rep('(load-file "${cmdargs[0]}")');
+            Compat.exit(0);
         }
 
         while (true) {
             try {
-                Sys.print("user> ");
-                var line = Sys.stdin().readLine();
+                var line = Compat.readline("user> ");
                 if (line == "") { continue; }
-                Sys.println(rep(line));
+                Compat.println(rep(line));
             } catch (exc:BlankLine) {
                 continue;
             } catch (exc:haxe.io.Eof) {
-                Sys.exit(0);
+                Compat.exit(0);
             } catch (exc:Dynamic) {
-                Sys.println(exc);
+                Compat.println(exc);
             }
         }
     }