jsonlogic
Values
pub fn apply(
rule: String,
to data: dynamic.Dynamic,
) -> Result(dynamic.Dynamic, error.EvaluationError)
Apply a JSONLogic rule to dynamic data.
This function parses the string rule via json.parse
and then
evaluates it using jsonlogic.apply_dynamic
.
Examples
jsonlogic.apply(
"{ \"var\" : \"a\" }",
dynamic.properties([
#(dynamic.string("a"), dynamic.int(1)),
#(dynamic.string("b"), dynamic.int(2)),
]),
)
// -> 1
pub fn apply_dynamic(
rule: dynamic.Dynamic,
to data: dynamic.Dynamic,
) -> Result(dynamic.Dynamic, error.EvaluationError)
Apply a dynamic JSONLogic rule to dynamic data.
This function should be used when the rule is already parsed via json.parse
or other means.
Examples
let rules =
"
{ \"and\" : [
{\"<\" : [ { \"var\" : \"temp\" }, 110 ]},
{\"==\" : [ { \"var\" : \"pie.filling\" }, \"apple\" ] }
] }
"
let data =
dynamic.properties([
#(dynamic.string("temp"), dynamic.int(100)),
#(
dynamic.string("pie"),
dynamic.properties([
#(dynamic.string("filling"), dynamic.string("apple")),
]),
),
])
use parsed_rules <- result.map(json.parse(rules, decode.dynamic))
jsonlogic.apply_dynamic(parsed_rules, data)
// -> Ok(True)