advantagefse / json-logic-swift

A native Swift JsonLogic implementation. This parser accepts JsonLogic rules and executes them.
MIT License
25 stars 22 forks source link

Are defaults supported? #22

Closed mamilov closed 2 years ago

mamilov commented 2 years ago

Hi, I'm currently trying to build my use case using your jsonlint package and I'm trying to do additions with data that might be missing some keys. To circumvent this, I'm adding defaults as documented here, but i'm always receiving keyNotFound Errors. Are default values supported?

jsonLogic:

```` { "+": [{ "var": ["MtgS-wRFsq2W6ZOZ9gq", 0] }, { "var": ["MtgS1WFJ2DaVGrpvUha", 0] }, { "var": ["MtgS7bS6e1trrSe-suX", 0] }, { "var": ["MtgSJyxA9kEf6b_61Vz", 0] }] } ````

Parsed jsonLogic Expression:

```` (jsonlogic.ArrayOfExpressions) $R11 = { expressions = 4 values { [0] = { expression = { expressions = 2 values { [0] = { json = String (String = "MtgS-wRFsq2W6ZOZ9gq") } [1] = { json = Int (Int = 0) } } } } [1] = { expression = { expressions = 2 values { [0] = { json = String (String = "MtgS1WFJ2DaVGrpvUha") } [1] = { json = Int (Int = 0) } } } } [2] = { expression = { expressions = 2 values { [0] = { json = String (String = "MtgS7bS6e1trrSe-suX") } [1] = { json = Int (Int = 0) } } } } [3] = { expression = { expressions = 2 values { [0] = { json = String (String = "MtgSJyxA9kEf6b_61Vz") } [1] = { json = Int (Int = 0) } } } } } } ````

Data parsed to JSON:

````(JSON.JSON?) $R17 = Dictionary { Dictionary = 10 key/value pairs { [0] = { key = "MtgS7bS6e1trrSe-suX" value = Int (Int = 0) } [1] = { key = "MtgS-wRFsq2W6ZOZ9gq" value = Int (Int = 1) } [2] = { key = "MtgRwxWKfwXn-UNCzET" value = Int (Int = 0) } [3] = { key = "MtgS34Y8AXt1UJiTYyY" value = Int (Int = 0) } [4] = { key = "MtgRyq_u9Nu8FpYGnQW" value = Int (Int = 0) } [5] = { key = "MtgS6A5NxGFs2BIwYX5" value = Int (Int = 0) } [6] = { key = "MtgS1WFJ2DaVGrpvUha" value = Int (Int = 0) } [7] = { key = "MtgS9OWoc3O8CXJeSdy" value = Int (Int = 0) } [8] = { key = "MtgS4PC_qmPCcjyH5CA" value = Int (Int = 0) } [9] = { key = "MtgSAfANO6aGCRzVdcp" value = Int (Int = 0) } } } ````
csknns commented 2 years ago

Hi @mamilov, thanks for reporting this! It seems that this is missing implementation. It does not seem to difficult to fix, I will try and push a fix in the next days :)