Packages
fun_pipelinex is a package which filter function's args and return value by your custom Filters.
Current section
Files
Jump to
Current section
Files
lib/executor.ex
defmodule FunPipelinex.Executor do
@moduledoc false
alias FunPipelinex.Helper
def run_by_args(args, filters, curr_m, f) do
with(
{:ok, args} <- run(filters, args),
exec_f <- Helper.make_exec_fun_name(f),
a <- Keyword.values(args)
) do
apply(curr_m, exec_f, a)
else
err -> err
end
end
def run_by_resp(resp, filters) do
run(filters, resp)
|> case do
{:ok, resp} -> resp
err -> err
end
end
###
def run(filters, term), do: do_run(filters, {:ok, term})
def do_run([], result), do: result
def do_run([{m, f} | rest], {:ok, term}) do
result = apply(m, f, [term])
Helper.debug_log(title: :run_filter, filter: "#{inspect(m)}.#{f}/1", result: result)
case result do
{:ok, _args} = result -> do_run(rest, result)
err -> do_run([], err)
end
end
end