From 832f9255942ea414008f3efa02295328c8575364 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Sun, 24 Jan 2021 12:12:14 -0700 Subject: [PATCH] buildAll() builder macro --- kiss/src/kiss/Kiss.hx | 16 ++++++++++++++++ projects/kiss-vscode/config/KissConfig.hx | 3 +-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index 685569d3..a7c49cec 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -133,6 +133,22 @@ class Kiss { }); } + /** + * Build macro: add fields to a Haxe class by compiling multiple Kiss files in order with the same KissState + */ + public static function buildAll(kissFiles:Array, ?k:KissState, useClassFields = true):Array { + if (k == null) + k = defaultKissState(); + + var fields = []; + + for (file in kissFiles) { + fields = fields.concat(build(file, k, useClassFields)); + } + + return fields; + } + public static function readerExpToField(exp:ReaderExp, k:KissState, errorIfNot = true):Null { var fieldForms = k.fieldForms; diff --git a/projects/kiss-vscode/config/KissConfig.hx b/projects/kiss-vscode/config/KissConfig.hx index 179033c9..37cd7377 100644 --- a/projects/kiss-vscode/config/KissConfig.hx +++ b/projects/kiss-vscode/config/KissConfig.hx @@ -6,6 +6,5 @@ import js.lib.Promise; typedef Command = (?String) -> Void; -@:build(kiss.Kiss.build("Config.kiss")) -@:build(kiss.Kiss.build("KissConfig.kiss")) +@:build(kiss.Kiss.buildAll(["KissConfig.kiss", "Config.kiss"])) class KissConfig {}