Fix in if reguarding pins.

This commit is contained in:
connor rigby 2017-11-21 09:29:09 -08:00
parent 277ada3c89
commit 296ea01ea1

View file

@ -11,10 +11,10 @@ defmodule Farmbot.CeleryScript.AST.Node.If do
if is_number(left) or is_nil(left) do
eval_if(left, op, rhs)
|> fn(result) ->
Logger.debug 2, "IF evaluated to #{result}."
result
end.() # for debug purposes.
# |> 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}
@ -28,13 +28,14 @@ defmodule Farmbot.CeleryScript.AST.Node.If do
defp eval_lhs({:pin, pin}) do
case Farmbot.BotState.get_pin_value(pin) do
{:ok, val} -> val
{:error, :unknown_pin} -> nil
{:error, reason} -> {:error, reason}
end
end
defp eval_if(nil, :is_undefined, _), do: true
defp eval_if(_, :is_undefined, _), do: false
defp eval_if(nil, _, _), do: {:error, "left hand side 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