From 8a8bc4a9859e763e84388109141dc84b64eb552f Mon Sep 17 00:00:00 2001 From: 0b1kn00b Date: Wed, 5 Oct 2022 10:43:16 +0200 Subject: [PATCH] KissFrontend in src --- extraParams.hxml | 1 + src/kiss/KissFrontend.hx | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/kiss/KissFrontend.hx diff --git a/extraParams.hxml b/extraParams.hxml index e69de29..9e95055 100644 --- a/extraParams.hxml +++ b/extraParams.hxml @@ -0,0 +1 @@ +--macro kiss.Kiss.setup() \ No newline at end of file diff --git a/src/kiss/KissFrontend.hx b/src/kiss/KissFrontend.hx new file mode 100644 index 0000000..30c2aa0 --- /dev/null +++ b/src/kiss/KissFrontend.hx @@ -0,0 +1,29 @@ +package kiss; + +import kiss.Kiss; +import tink.syntaxhub.*; +import haxe.macro.Expr; +import haxe.macro.Context; +import haxe.macro.Expr.ImportMode; + +class KissFrontend implements FrontendPlugin { + + public function new() {} + + public function extensions() + return ['kiss'].iterator(); + + public function parse(file:String, context:FrontendContext):Void { + + final fields = Kiss.build(file,null,false,context.name); + var pos = Context.makePosition({ file: file, min: 0, max: 999 }); + trace(context.name); + final type = context.getType(); + context.addImport('kiss.Prelude',INormal,pos); + for (field in fields){ + type.fields.push(field); + } + } + static function use() + tink.SyntaxHub.frontends.whenever(new KissFrontend()); +} \ No newline at end of file