Current section
Files
Jump to
Current section
Files
src/butterbee@internal@function.erl
-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@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.