From bf7dffb127c3fca25c5726bc99034ea0eedcbf9c Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 14 Mar 2021 11:55:02 -0600 Subject: [PATCH] CLI converts stdin -> kiss expressions -> Haxe -> Stdout --- src/kiss/Main.hx | 29 +++++++++++++++++++++++++++-- src/kiss/Main.kiss | 2 -- 2 files changed, 27 insertions(+), 4 deletions(-) delete mode 100644 src/kiss/Main.kiss diff --git a/src/kiss/Main.hx b/src/kiss/Main.hx index 01b174b..cebdc4e 100644 --- a/src/kiss/Main.hx +++ b/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/src/kiss/Main.kiss b/src/kiss/Main.kiss deleted file mode 100644 index 4bd1e23..0000000 --- a/src/kiss/Main.kiss +++ /dev/null @@ -1,2 +0,0 @@ -(defun main [] - (print "Hello, world!")) \ No newline at end of file