From 0a38f65991e6e6c3bc0ac0ad13e8688becaae801 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 11 Dec 2022 21:51:01 +0000 Subject: [PATCH] KissFrontEnd.dsl(). Related to #157 --- kiss/src/kiss/KissFrontend.hx | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/kiss/src/kiss/KissFrontend.hx b/kiss/src/kiss/KissFrontend.hx index 019ac911..fba59a48 100644 --- a/kiss/src/kiss/KissFrontend.hx +++ b/kiss/src/kiss/KissFrontend.hx @@ -5,17 +5,29 @@ import tink.syntaxhub.*; import haxe.macro.Expr; import haxe.macro.Context; import haxe.macro.Expr.ImportMode; +using StringTools; class KissFrontend implements FrontendPlugin { - public function new() {} + var extension:String; + var dslFile:String; + public function new(extension = "kiss", dslFile = "") { + this.extension = extension; + this.dslFile = dslFile; + } - public function extensions() - return ['kiss'].iterator(); + public function extensions() { + return [extension].iterator(); + } public function parse(file:String, context:FrontendContext):Void { - final fields = Kiss.build(file,null,false,context); + var files = [file]; + if (dslFile.length > 0) { + files.unshift(dslFile); + } + + final fields = Kiss.buildAll(files,null,false,context); #if debug trace(context.name); #end @@ -29,6 +41,14 @@ class KissFrontend implements FrontendPlugin { } } - static function use() + static function use() { tink.SyntaxHub.frontends.whenever(new KissFrontend()); + } + + static function dsl(extension:String, dslFile:String) { + if (extension.startsWith(".")) { + extension = extension.substr(1); + } + tink.SyntaxHub.frontends.whenever(new KissFrontend(extension, dslFile)); + } } \ No newline at end of file