allow for args to be mutated
This commit is contained in:
parent
a501a7e14c
commit
8aab2b0439
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue