diff --git a/kiss/src/kiss/KissInterp.hx b/kiss/src/kiss/KissInterp.hx index a1aa863c..734f9652 100644 --- a/kiss/src/kiss/KissInterp.hx +++ b/kiss/src/kiss/KissInterp.hx @@ -1,5 +1,6 @@ package kiss; +import hscript.Parser; import hscript.Interp; import kiss.Prelude; @@ -12,6 +13,7 @@ import kiss.Prelude; */ class KissInterp extends Interp { var nullForUnknownVar:Bool; + var parser = new Parser(); // TODO standardize this with KissConfig.prepareInterp public function new(nullForUnknownVar = false) { @@ -30,6 +32,11 @@ class KissInterp extends Interp { variables.set("kiss", {}); } + public function evalKiss(kissStr:String):Dynamic { + return execute(parser.parseString(Prelude.convertToHScript(kissStr))); + } + + // In some contexts, undefined variables should just return "null" as a falsy value override function resolve(id:String):Dynamic { if (nullForUnknownVar) { return try { diff --git a/projects/nat-archive-tool/src/nat/BoolExpInterp.hx b/projects/nat-archive-tool/src/nat/BoolExpInterp.hx index 41f835da..10d0a236 100644 --- a/projects/nat-archive-tool/src/nat/BoolExpInterp.hx +++ b/projects/nat-archive-tool/src/nat/BoolExpInterp.hx @@ -1,7 +1,6 @@ package nat; import kiss.KissInterp; -import hscript.Parser; import kiss.Prelude; @:build(kiss.Kiss.build()) diff --git a/projects/nat-archive-tool/src/nat/BoolExpInterp.kiss b/projects/nat-archive-tool/src/nat/BoolExpInterp.kiss index 2b2a05d2..9abb6a3b 100644 --- a/projects/nat-archive-tool/src/nat/BoolExpInterp.kiss +++ b/projects/nat-archive-tool/src/nat/BoolExpInterp.kiss @@ -1,9 +1,5 @@ (function eval [:String expStr :Array activeConditions] - (let [hscript (Prelude.convertToHScript expStr) - parser (new Parser) - hscriptExp (parser.parseString hscript) - interp (new BoolExpInterp)] - + (let [interp (new BoolExpInterp)] (doFor condition activeConditions (interp.variables.set condition true)) - ?(interp.execute hscriptExp))) + ?(interp.evalKiss expStr)))