@@ -10,11 +10,12 @@ class JsonLogic {
10
10
*
11
11
* @param logic the logic as a json encoded string
12
12
* @param data the data as a json encoded string
13
+ * @param safe if true an exception is returned as false else exceptions are thrown
13
14
* @return evaluation result
14
15
*/
15
16
@JvmOverloads
16
- fun apply (logic : String? , data : String? = null) = evaluate(logic.parse as ? Map < * , * >
17
- ? : logic, data.parse).toString()
17
+ fun apply (logic : String? , data : String? = null, safe : Boolean = true) =
18
+ evaluateSafe(logic.parse as ? Map < * , * > ? : logic, data.parse, safe ).toString()
18
19
19
20
/* *
20
21
* Apply logic on data and get a result
@@ -25,9 +26,7 @@ class JsonLogic {
25
26
* @return evaluation result
26
27
*/
27
28
@JvmOverloads
28
- fun apply (logic : Any? , data : Any? = null, safe : Boolean = true) =
29
- if (safe) try { evaluate(logic, data).toString() } catch (e: kotlin.NotImplementedError ) { " false" }
30
- else evaluate(logic, data).toString()
29
+ fun apply (logic : Any? , data : Any? = null, safe : Boolean = true) = evaluateSafe(logic, data, safe).toString()
31
30
32
31
/* *
33
32
* Add new operations http://jsonlogic.com/add_operation.html
@@ -37,6 +36,14 @@ class JsonLogic {
37
36
*/
38
37
fun addOperation (operator : String , lambda : (List <Any ?>? , Any? ) -> Any? ) = customOperations.put(operator , lambda)
39
38
39
+ private fun evaluateSafe (logic : Any? , data : Any? = null, safe : Boolean = true) = if (safe) {
40
+ try {
41
+ evaluate(logic, data)
42
+ } catch (e: kotlin.NotImplementedError ) {
43
+ false
44
+ }
45
+ } else evaluate(logic, data)
46
+
40
47
private fun evaluate (logic : Any? , data : Any? = null): Any? {
41
48
if (logic !is Map <* , * >) return logic
42
49
if (logic.isNullOrEmpty()) return data
0 commit comments