-module(jsonlogic). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/jsonlogic.gleam"). -export([apply/2, apply_dynamic/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -file("src/jsonlogic.gleam", 22). ?DOC( " Apply a JSONLogic rule to dynamic data.\n" "\n" " ## Examples\n" "\n" " ```gleam\n" " jsonlogic.apply(\n" " \"{ \\\"var\\\" : \\\"a\\\" }\",\n" " dynamic.properties([\n" " #(dynamic.string(\"a\"), dynamic.int(1)),\n" " #(dynamic.string(\"b\"), dynamic.int(2)),\n" " ]),\n" " )\n" " // -> 1\n" " ```\n" ). -spec apply(binary(), gleam@dynamic:dynamic_()) -> {ok, gleam@dynamic:dynamic_()} | {error, jsonlogic@error:evaluation_error()}. apply(Rule, Data) -> _pipe = jsonlogic@internal@decoding:decode_rule_string(Rule), gleam@result:'try'( _pipe, fun(_capture) -> jsonlogic@internal@evaluation:evaluate(_capture, Data) end ). -file("src/jsonlogic.gleam", 79). ?DOC( " Apply a dynamic JSONLogic rule to dynamic data.\n" "\n" " ## Examples\n" "\n" " ```gleam\n" " let rules =\n" " dynamic.properties([\n" " #(\n" " dynamic.string(\"and\"),\n" " dynamic.list([\n" " dynamic.properties([\n" " #(\n" " dynamic.string(\"<\"),\n" " dynamic.list([\n" " dynamic.properties([\n" " #(dynamic.string(\"var\"), dynamic.string(\"temp\")),\n" " ]),\n" " dynamic.int(110),\n" " ]),\n" " ),\n" " #(\n" " dynamic.string(\"==\"),\n" " dynamic.list([\n" " dynamic.properties([\n" " #(dynamic.string(\"var\"), dynamic.string(\"pie.filling\")),\n" " ]),\n" " dynamic.string(\"apple\"),\n" " ]),\n" " ),\n" " ]),\n" " ]),\n" " ),\n" " ])\n" "\n" " let data =\n" " dynamic.properties([\n" " #(dynamic.string(\"temp\"), dynamic.int(100)),\n" " #(\n" " dynamic.string(\"pie\"),\n" " dynamic.properties([\n" " #(dynamic.string(\"filling\"), dynamic.string(\"apple\")),\n" " ]),\n" " ),\n" " ])\n" "\n" " jsonlogic.apply(rules, data);\n" " // -> True\n" " ```\n" ). -spec apply_dynamic(gleam@dynamic:dynamic_(), gleam@dynamic:dynamic_()) -> {ok, gleam@dynamic:dynamic_()} | {error, jsonlogic@error:evaluation_error()}. apply_dynamic(Rule, Data) -> _pipe = jsonlogic@internal@decoding:decode_rule(Rule), gleam@result:'try'( _pipe, fun(_capture) -> jsonlogic@internal@evaluation:evaluate(_capture, Data) end ).