CLI converts stdin -> kiss expressions -> Haxe -> Stdout

This commit is contained in:
2021-03-14 11:55:02 -06:00
parent c294db0272
commit 649b5066cb
2 changed files with 27 additions and 4 deletions

View File

@@ -1,4 +1,29 @@
package kiss;
@:build(kiss.Kiss.build("src/kiss/Main.kiss"))
class Main {}
#if macro
import haxe.macro.Expr;
import kiss.Kiss;
import kiss.Reader;
import kiss.Stream;
using tink.MacroApi;
#end
class Main {
static macro function macroMain():Expr {
var kissInputStream = Stream.fromString(Sys.stdin().readAll().toString());
var k = Kiss.defaultKissState();
Reader.readAndProcess(kissInputStream, k, (readerExp) -> {
Sys.println(Kiss.readerExpToHaxeExpr(readerExp, k).toString());
});
return macro null;
}
// When called from the command-line, `kiss` converts its stdin output to Haxe expressions
// TODO write tests for this
// TODO use this to implement runAtRuntime() for sys targets by running a haxe subprocess
static function main() {
macroMain();
}
}

View File

@@ -1,2 +0,0 @@
(defun main []
(print "Hello, world!"))