-module(cel@interpreter). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([default_context/0, new/1, execute/2]). -export_type([program/0]). -opaque program() :: {program, cel@parser:expression()}. -file("/Users/jonas/src/personal/cel-gleam/src/cel/interpreter.gleam", 14). -spec default_context() -> cel@interpreter@context:context(). default_context() -> _pipe = cel@interpreter@context:empty(), _pipe@1 = cel@interpreter@context:insert_function( _pipe, <<"filter"/utf8>>, fun cel@interpreter@function:filter/1 ), _pipe@2 = cel@interpreter@context:insert_function( _pipe@1, <<"map"/utf8>>, fun cel@interpreter@function:map/1 ), _pipe@3 = cel@interpreter@context:insert_function( _pipe@2, <<"all"/utf8>>, fun cel@interpreter@function:all/1 ), _pipe@4 = cel@interpreter@context:insert_function( _pipe@3, <<"size"/utf8>>, fun cel@interpreter@function:size/1 ), _pipe@5 = cel@interpreter@context:insert_function( _pipe@4, <<"has"/utf8>>, fun cel@interpreter@function:has/1 ), _pipe@6 = cel@interpreter@context:insert_function( _pipe@5, <<"exists"/utf8>>, fun cel@interpreter@function:exists/1 ), cel@interpreter@context:insert_function( _pipe@6, <<"exists_one"/utf8>>, fun cel@interpreter@function:exists_one/1 ). -file("/Users/jonas/src/personal/cel-gleam/src/cel/interpreter.gleam", 25). -spec new(binary()) -> {ok, program()} | {error, cel@parser:error()}. new(Source) -> gleam@result:map( cel@parser:parse(Source), fun(Parsed) -> {program, Parsed} end ). -file("/Users/jonas/src/personal/cel-gleam/src/cel/interpreter.gleam", 30). -spec execute(program(), cel@interpreter@context:context()) -> {ok, cel@interpreter@value:value()} | {error, cel@interpreter@error:execution_error()}. execute(Program, Ctx) -> cel@interpreter@evaluate:evaluate_expr(erlang:element(2, Program), Ctx).