Shoehorn sequence name into the args. Hopefully this ins't an issue later on.
This commit is contained in:
parent
296ea01ea1
commit
117eaec2f1
|
@ -9,15 +9,9 @@ defmodule Farmbot.CeleryScript.AST.Node.If do
|
|||
env = mutate_env(env)
|
||||
left = eval_lhs(lhs)
|
||||
|
||||
if is_number(left) or is_nil(left) do
|
||||
eval_if(left, op, rhs)
|
||||
# |> fn(result) ->
|
||||
# Logger.debug 2, "IF evaluated to #{inspect result}."
|
||||
# result
|
||||
# end.() # for debug purposes.
|
||||
|> do_jump(else_, then_, env)
|
||||
else
|
||||
{:error, "Lefthand could not be evaluated to a number (#{inspect left})", env}
|
||||
cond do
|
||||
is_number(left) or is_nil(left) -> eval_if(left, op, rhs) |> do_jump(else_, then_, env)
|
||||
match?({:error, _}, left) -> {:error, elem(left, 1), env}
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -35,7 +29,8 @@ defmodule Farmbot.CeleryScript.AST.Node.If do
|
|||
|
||||
defp eval_if(nil, :is_undefined, _), do: true
|
||||
defp eval_if(_, :is_undefined, _), do: false
|
||||
defp eval_if(nil, _, _), do: {:error, "Could not eval IF because left hand side of if statement is undefined."}
|
||||
defp eval_if(nil, _, _),
|
||||
do: {:error, "Could not eval IF because left hand side of if statement is undefined."}
|
||||
|
||||
defp eval_if(lhs, :>, rhs) when lhs > rhs, do: true
|
||||
defp eval_if(_lhs, :>, _rhs), do: false
|
||||
|
|
|
@ -14,7 +14,9 @@ defmodule Farmbot.CeleryScript.AST.Node.Execute do
|
|||
seq ->
|
||||
case Farmbot.CeleryScript.AST.decode(seq) do
|
||||
{:ok, ast} ->
|
||||
Farmbot.CeleryScript.execute(ast, env)
|
||||
# remove this some day.
|
||||
ast_with_label = %{ast | args: Map.put(ast.args, :label, seq.name)}
|
||||
Farmbot.CeleryScript.execute(ast_with_label, env)
|
||||
{:error, reason} -> {:error, reason, env}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,24 +2,24 @@ defmodule Farmbot.CeleryScript.AST.Node.Sequence do
|
|||
@moduledoc false
|
||||
use Farmbot.CeleryScript.AST.Node
|
||||
use Farmbot.Logger
|
||||
allow_args [:version, :is_outdated]
|
||||
allow_args [:version, :is_outdated, :label]
|
||||
|
||||
def execute(%{version: _, is_outdated: _}, body, env) do
|
||||
Logger.busy 2, "Starting sequence."
|
||||
def execute(%{version: _, is_outdated: _, label: name}, body, env) do
|
||||
Logger.busy 2, "[#{name}] - Sequence init."
|
||||
env = mutate_env(env)
|
||||
do_reduce(body, env)
|
||||
do_reduce(body, env, name)
|
||||
end
|
||||
|
||||
defp do_reduce([ast | rest], env) do
|
||||
Logger.info 2, "Sequence Executing: #{inspect ast}"
|
||||
defp do_reduce([ast | rest], env, name) do
|
||||
Logger.info 2, "[#{name}] - Sequence Executing: #{inspect ast}"
|
||||
case Farmbot.CeleryScript.execute(ast, env) do
|
||||
{:ok, new_env} -> do_reduce(rest, new_env)
|
||||
{:ok, new_env} -> do_reduce(rest, new_env, name)
|
||||
{:error, reason, env} -> {:error, reason, env}
|
||||
end
|
||||
end
|
||||
|
||||
defp do_reduce([], env) do
|
||||
Logger.success 2, "Sequence complete!"
|
||||
defp do_reduce([], env, name) do
|
||||
Logger.success 2, "[#{name}] - Sequence complete."
|
||||
{:ok, env}
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue