allow for args to be mutated

This commit is contained in:
Connor Rigby 2017-11-03 16:54:05 -07:00
parent a501a7e14c
commit 8aab2b0439
5 changed files with 12 additions and 10 deletions

View file

@ -2,5 +2,5 @@ defmodule Farmbot.CeleryScript.AST.Arg.Else do
@moduledoc false
@behaviour Farmbot.CeleryScript.AST.Arg
def verify(val), do: {:ok, val}
def verify(val), do: Farmbot.CeleryScript.AST.decode(val)
end

View file

@ -2,5 +2,5 @@ defmodule Farmbot.CeleryScript.AST.Arg.Then do
@moduledoc false
@behaviour Farmbot.CeleryScript.AST.Arg
def verify(val), do: {:ok, val}
def verify(val), do: Farmbot.CeleryScript.AST.decode(val)
end

View file

@ -43,7 +43,7 @@ defmodule Farmbot.CeleryScript.AST do
if {arg_name, 0} in __MODULE__.module_info(:exports) do
case apply(__MODULE__, arg_name, []).verify(val) do
# if this argument is valid, continue enumeration.
{:ok, decoded} -> decode_args(rest, [decoded | acc])
{:ok, decoded} -> decode_args(rest, [{arg_name, decoded} | acc])
{:error, _} = err -> err
end
else
@ -106,6 +106,7 @@ defmodule Farmbot.CeleryScript.AST do
mod when is_atom(mod) ->
case decode_body(map[:body] || []) do
{:ok, body} ->
IO.puts mod
case mod.decode_args(args) do
{:ok, decoded} ->
opts = [kind: mod,

View file

@ -1,6 +1,7 @@
# defimpl Inspect, for: Farmbot.CeleryScript.AST do
# def inspect(ast, _opts) do
# body = Enum.map(ast.body, fn(sub_ast) -> sub_ast.kind end) |> inspect()
# "#CeleryScript<#{ast.kind}: #{inspect(Map.keys(ast.args))}, #{body}>"
# end
# end
defimpl Inspect, for: Farmbot.CeleryScript.AST do
def inspect(ast, _opts) do
kind = Module.split(ast.kind) |> List.last
# body = Enum.map(ast.body, &inspect(&1)) |> inspect()
"#CeleryScript<#{kind}: #{inspect(Map.keys(ast.args))}, #{inspect ast.body}>"
end
end

View file

@ -1,5 +1,5 @@
defmodule Farmbot.CeleryScript.AST.Node.Sequence do
@moduledoc false
use Farmbot.CeleryScript.AST.Node
allow_args [:version]
allow_args [:version, :is_outdated]
end