diff --git a/kiss/src/kiss/Main.hx b/kiss/src/kiss/Main.hx index 01b174b7..cebdc4ec 100644 --- a/kiss/src/kiss/Main.hx +++ b/kiss/src/kiss/Main.hx @@ -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(); + } +} diff --git a/kiss/src/kiss/Main.kiss b/kiss/src/kiss/Main.kiss deleted file mode 100644 index 4bd1e234..00000000 --- a/kiss/src/kiss/Main.kiss +++ /dev/null @@ -1,2 +0,0 @@ -(defun main [] - (print "Hello, world!")) \ No newline at end of file