We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iex(workflow_engine@tomwganem.local)17> input = """ ...(workflow_engine@tomwganem.local)17> [servers.alpha] ...(workflow_engine@tomwganem.local)17> ip = "192.168.1.1" ...(workflow_engine@tomwganem.local)17> ports = [8080, 8081] ...(workflow_engine@tomwganem.local)17> ...(workflow_engine@tomwganem.local)17> [servers.beta] ...(workflow_engine@tomwganem.local)17> ip = "192.168.1.2" ...(workflow_engine@tomwganem.local)17> ports = [8082, 8083] ...(workflow_engine@tomwganem.local)17> """ "[servers.alpha]\nip = \"192.168.1.1\"\nports = [8080, 8081]\n\n[servers.beta]\nip = \"192.168.1.2\"\nports = [8082, 8083]\n" iex(workflow_engine@tomwganem.local)18> defmodule Server do ...(workflow_engine@tomwganem.local)18> defstruct [:name, :ip, :ports] ...(workflow_engine@tomwganem.local)18> end warning: redefining module Server (current version loaded from _build/dev/lib/workflow_engine/ebin/Elixir.Server.beam) iex:18 {:module, Server, <<70, 79, 82, 49, 0, 0, 5, 220, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 183, 0, 0, 0, 18, 13, 69, 108, 105, 120, 105, 114, 46, 83, 101, 114, 118, 101, 114, 8, 95, 95, 105, 110, 102, 111, 95, 95, ...>>, %Server{ip: nil, name: nil, ports: nil}} iex(workflow_engine@tomwganem.local)19> nil iex(workflow_engine@tomwganem.local)20> defmodule IPStringToCharlist do ...(workflow_engine@tomwganem.local)20> use Toml.Transform ...(workflow_engine@tomwganem.local)20> ...(workflow_engine@tomwganem.local)20> def transform(:ip, v) when is_binary(v) do ...(workflow_engine@tomwganem.local)20> String.to_charlist(v) ...(workflow_engine@tomwganem.local)20> end ...(workflow_engine@tomwganem.local)20> def transform(_k, v), do: v ...(workflow_engine@tomwganem.local)20> end warning: redefining module IPStringToCharlist (current version loaded from _build/dev/lib/workflow_engine/ebin/Elixir.IPStringToCharlist.beam) iex:20 {:module, IPStringToCharlist, <<70, 79, 82, 49, 0, 0, 4, 224, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 171, 0, 0, 0, 16, 25, 69, 108, 105, 120, 105, 114, 46, 73, 80, 83, 116, 114, 105, 110, 103, 84, 111, 67, 104, 97, 114, 108, ...>>, {:transform, 2}} iex(workflow_engine@tomwganem.local)21> nil iex(workflow_engine@tomwganem.local)22> defmodule CharlistToIP do ...(workflow_engine@tomwganem.local)22> use Toml.Transform ...(workflow_engine@tomwganem.local)22> ...(workflow_engine@tomwganem.local)22> def transform(:ip, v) when is_list(v) do ...(workflow_engine@tomwganem.local)22> case :inet.parse_ipv4_address(v) do ...(workflow_engine@tomwganem.local)22> {:ok, address} -> ...(workflow_engine@tomwganem.local)22> address ...(workflow_engine@tomwganem.local)22> {:error, reason} -> ...(workflow_engine@tomwganem.local)22> {:error, {:invalid_ip_address, reason}} ...(workflow_engine@tomwganem.local)22> end ...(workflow_engine@tomwganem.local)22> end ...(workflow_engine@tomwganem.local)22> def transform(:ip, v), do: {:error, {:invalid_ip_address, v}} ...(workflow_engine@tomwganem.local)22> def transform(_k, v), do: v ...(workflow_engine@tomwganem.local)22> end warning: redefining module CharlistToIP (current version loaded from _build/dev/lib/workflow_engine/ebin/Elixir.CharlistToIP.beam) iex:22 {:module, CharlistToIP, <<70, 79, 82, 49, 0, 0, 5, 184, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 191, 0, 0, 0, 19, 19, 69, 108, 105, 120, 105, 114, 46, 67, 104, 97, 114, 108, 105, 115, 116, 84, 111, 73, 80, 8, 95, 95, ...>>, {:transform, 2}} iex(workflow_engine@tomwganem.local)23> nil iex(workflow_engine@tomwganem.local)24> defmodule ServerMapToList do ...(workflow_engine@tomwganem.local)24> use Toml.Transform ...(workflow_engine@tomwganem.local)24> ...(workflow_engine@tomwganem.local)24> def transform(:servers, v) when is_map(v) do ...(workflow_engine@tomwganem.local)24> for {name, server} <- v, do: struct(Server, Map.put(v, :name, name)) ...(workflow_engine@tomwganem.local)24> end ...(workflow_engine@tomwganem.local)24> def transform(_k, v), do: v ...(workflow_engine@tomwganem.local)24> end warning: redefining module ServerMapToList (current version loaded from _build/dev/lib/workflow_engine/ebin/Elixir.ServerMapToList.beam) iex:24 warning: variable "server" is unused iex:28 {:module, ServerMapToList, <<70, 79, 82, 49, 0, 0, 6, 24, 66, 69, 65, 77, 65, 116, 85, 56, 0, 0, 0, 249, 0, 0, 0, 25, 22, 69, 108, 105, 120, 105, 114, 46, 83, 101, 114, 118, 101, 114, 77, 97, 112, 84, 111, 76, 105, 115, 116, ...>>, {:transform, 2}} iex(workflow_engine@tomwganem.local)25> transforms = [IPStringToCharlist, CharlistToIP, ServerMapToList] [IPStringToCharlist, CharlistToIP, ServerMapToList] iex(workflow_engine@tomwganem.local)26> Toml.decode(input, keys: :atoms, transforms: transforms) {:ok, %{ servers: [ %Server{ip: nil, name: :alpha, ports: nil}, %Server{ip: nil, name: :beta, ports: nil} ] }}
The text was updated successfully, but these errors were encountered:
The error is in your ServerMapToList transform - there is a typo Map.put(v, :name, name) when it should be Map.put(server, :name, name).
ServerMapToList
Map.put(v, :name, name)
Map.put(server, :name, name)
Sorry, something went wrong.
1a27be8
Just an FYI - the test suite has tests for the transforms, I wrote the README from hand, so it seems like I goofed a few times, sorry about that :(
Thank you for fixing things so quickly 👍
No branches or pull requests
The text was updated successfully, but these errors were encountered: