diff --git a/src/kiss/FuzzyMap.hx b/src/kiss/FuzzyMap.hx index c6952ed..ffca637 100644 --- a/src/kiss/FuzzyMap.hx +++ b/src/kiss/FuzzyMap.hx @@ -9,6 +9,7 @@ using hx.strings.Strings; abstract FuzzyMap(StringMap) from StringMap to StringMap { public inline function new(?m:StringMap) { this = if (m != null) m else new StringMap(); + FuzzyMapTools.fuzzyMaps[this] = true; } @:from diff --git a/src/kiss/FuzzyMapTools.hx b/src/kiss/FuzzyMapTools.hx index 80d2e16..6c756b4 100644 --- a/src/kiss/FuzzyMapTools.hx +++ b/src/kiss/FuzzyMapTools.hx @@ -13,6 +13,13 @@ typedef MapInfo = { class FuzzyMapTools { static var serializingMaps = new Map, MapInfo>(); + @:allow(kiss.FuzzyMap) + static var fuzzyMaps:Map,Bool> = []; + + public static function isFuzzy(map:Map) { + return fuzzyMaps.exists(map); + } + /** * FuzzyMap is highly inefficient, so you may wish to memoize the matches that it makes before * releasing your project. FuzzyMapTools.serializeMatches() helps with this diff --git a/src/test/cases/AsyncDSLScriptThatWillCache.dsl b/src/test/cases/AsyncDSLScriptThatWillCache.dsl index cf69cfe..39b3f51 100644 --- a/src/test/cases/AsyncDSLScriptThatWillCache.dsl +++ b/src/test/cases/AsyncDSLScriptThatWillCache.dsl @@ -1,3 +1,6 @@ {goop (cc)} {gloop (cc)} +{(Assert.isTrue (FuzzyMapTools.isFuzzy fuzzyMap))(cc)} +{(Assert.isFalse (FuzzyMapTools.isFuzzy nonFuzzyMap))(cc)} + {(set wholeScriptDone true) (cc)} \ No newline at end of file diff --git a/src/test/cases/DSL.kiss b/src/test/cases/DSL.kiss index d6fdc34..b3ed457 100644 --- a/src/test/cases/DSL.kiss +++ b/src/test/cases/DSL.kiss @@ -2,4 +2,6 @@ (defReaderMacro "goop" [stream] `(Assert.isTrue true)) (defReaderMacro "gloop" [stream] `(Assert.isFalse false)) (prop &mut wholeScriptDone false) -(prop Assert utest.Assert) \ No newline at end of file +(prop Assert utest.Assert) +(prop :FuzzyMap fuzzyMap (new FuzzyMap)) +(prop :Map nonFuzzyMap (new Map)) \ No newline at end of file diff --git a/src/test/cases/DSLTestCase.hx b/src/test/cases/DSLTestCase.hx index 1085ff3..8d7866d 100644 --- a/src/test/cases/DSLTestCase.hx +++ b/src/test/cases/DSLTestCase.hx @@ -5,6 +5,8 @@ import utest.Assert; import kiss.EmbeddedScript; import kiss.AsyncEmbeddedScript; import kiss.Prelude; +import kiss.FuzzyMap; +import kiss.FuzzyMapTools; class DSLTestCase extends Test { function testScript() {