-module(butterbee@internal@function). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/butterbee/internal/function.gleam"). -export([abstract/4, static/3, on_value/3, on_node/3, on_nodes/3, result_to_string/1, result_to_string_list/1, result_to_bool/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -file("src/butterbee/internal/function.gleam", 13). ?DOC(false). -spec abstract( butterbee@webdriver:web_driver(any()), gleam@option:option(butterbidi@script@types@local_value:local_value()), list(butterbidi@script@types@local_value:local_value()), binary() ) -> {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()}. abstract(Driver, This, Arguments, Function) -> case butterbee@webdriver:get_context(Driver) of {error, Error} -> {error, Error}; {ok, Context} -> Target = butterbidi@script@types@target:new_context_target(Context), Params = begin _pipe = butterbidi@script@commands@call_function:new(Target), _pipe@1 = butterbidi@script@commands@call_function:with_function( _pipe, Function ), butterbidi@script@commands@call_function:with_arguments( _pipe@1, Arguments ) end, Params@1 = case This of none -> Params; {some, This@1} -> butterbidi@script@commands@call_function:with_this( Params, This@1 ) end, butterbee@internal@retry:until_ok( fun() -> butterbee@internal@commands@script:call_function( Driver, Params@1 ) end ) end. -file("src/butterbee/internal/function.gleam", 39). ?DOC(false). -spec static( butterbee@webdriver:web_driver(any()), list(butterbidi@script@types@local_value:local_value()), binary() ) -> {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()}. static(Driver, Arguments, Function) -> abstract(Driver, none, Arguments, Function). -file("src/butterbee/internal/function.gleam", 90). ?DOC(false). -spec on_value( butterbee@webdriver:web_driver(butterbidi@script@types@local_value:local_value()), list(butterbidi@script@types@local_value:local_value()), binary() ) -> {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()}. on_value(Driver, Arguments, Function) -> case erlang:element(5, Driver) of {error, Error} -> {error, Error}; {ok, Local_value} -> abstract(Driver, {some, Local_value}, Arguments, Function) end. -file("src/butterbee/internal/function.gleam", 47). ?DOC(false). -spec on_node( butterbee@webdriver:web_driver(butterbidi@script@types@remote_value:node_remote_value()), list(butterbidi@script@types@local_value:local_value()), binary() ) -> {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()}. on_node(Driver, Arguments, Function) -> _pipe = Driver, _pipe@1 = butterbee@webdriver:with_state( _pipe, (case erlang:element(5, Driver) of {error, Error} -> {error, Error}; {ok, Node} -> {ok, butterbidi@script@types@local_value:node(Node)} end) ), on_value(_pipe@1, Arguments, Function). -file("src/butterbee/internal/function.gleam", 62). ?DOC(false). -spec on_nodes( butterbee@webdriver:web_driver(list(butterbidi@script@types@remote_value:node_remote_value())), list(butterbidi@script@types@local_value:local_value()), binary() ) -> {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()}. on_nodes(Driver, Arguments, Function) -> _pipe = Driver, _pipe@1 = butterbee@webdriver:with_state( _pipe, (case erlang:element(5, Driver) of {error, Error} -> {error, Error}; {ok, Nodes} -> case gleam@list:try_map( Nodes, fun(Node) -> Value = butterbidi@script@types@local_value:node(Node), case Value of {remote_reference, _} -> {ok, Value}; _ -> {error, could_not_convert_to_local_value} end end ) of {error, Error@1} -> {error, Error@1}; {ok, Nodes@1} -> {ok, butterbidi@script@types@local_value:array(Nodes@1)} end end) ), on_value(_pipe@1, Arguments, Function). -file("src/butterbee/internal/function.gleam", 103). ?DOC(false). -spec result_to_string( {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()} ) -> {ok, binary()} | {error, butterbee@internal@error:butterbee_error()}. result_to_string(Result) -> case Result of {error, Error} -> {error, Error}; {ok, Evaluate_result} -> case Evaluate_result of {success_result, Success} -> {ok, butterbidi@script@types@remote_value:to_string( erlang:element(3, Success) )}; {exception_result, Exception} -> {ok, butterbidi@script@types@remote_value:to_string( erlang:element(3, erlang:element(3, Exception)) )} end end. -file("src/butterbee/internal/function.gleam", 117). ?DOC(false). -spec result_to_string_list( {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()} ) -> {ok, list(binary())} | {error, butterbee@internal@error:butterbee_error()}. result_to_string_list(Result_list) -> case Result_list of {error, Error} -> {error, Error}; {ok, Evaluate_result} -> case Evaluate_result of {success_result, Success} -> {ok, butterbidi@script@types@remote_value:to_string_list( erlang:element(3, Success) )}; {exception_result, Exception} -> {ok, butterbidi@script@types@remote_value:to_string_list( erlang:element(3, erlang:element(3, Exception)) )} end end. -file("src/butterbee/internal/function.gleam", 133). ?DOC(false). -spec result_to_bool( {ok, butterbidi@script@types@evaluate_result:evaluate_result()} | {error, butterbee@internal@error:butterbee_error()} ) -> {ok, boolean()} | {error, butterbee@internal@error:butterbee_error()}. result_to_bool(Result) -> case Result of {error, Error} -> {error, Error}; {ok, Evaluate_result} -> case Evaluate_result of {success_result, Success} -> {ok, butterbidi@script@types@remote_value:to_bool( erlang:element(3, Success) )}; {exception_result, Exception} -> {error, {to_bool_error, butterbidi@script@types@remote_value:to_string( erlang:element(3, erlang:element(3, Exception)) )}} end end.