Cannot customize Table Array Transforms
Closed this issue · 0 comments
AshDevFr commented
I am trying to use this library, it is working pretty well but for my project I need to be able to customize the table array transform
function.
I made an example to show what happens with a simple toml input:
Transform function used for log purpose:
defmodule TestToml do
use Toml.Transform
def transform(k, v) do
{k, v}
|> IO.inspect
v
end
end
Input variable:
input = """
[servers.alpha]
ip = "192.168.1.1"
[[servers.alpha.ports]]
Number = 8001
[[servers.alpha.ports]]
Number = 8002
[servers.beta]
ip = "192.168.1.2"
[[servers.beta.ports]]
Number = 8082
[[servers.beta.ports]]
Number = 8083
"""
iex(1)> Toml.decode(input, transforms: [TestToml])
{"ip", "192.168.1.1"}
{"Number", 8001}
{"Number", 8002}
{"alpha",
%{"ip" => "192.168.1.1", "ports" => [%{"Number" => 8001}, %{"Number" => 8002}]}}
{"ip", "192.168.1.2"}
{"Number", 8082}
{"Number", 8083}
{"beta",
%{"ip" => "192.168.1.2", "ports" => [%{"Number" => 8082}, %{"Number" => 8083}]}}
{"servers",
%{
"alpha" => %{
"ip" => "192.168.1.1",
"ports" => [%{"Number" => 8001}, %{"Number" => 8002}]
},
"beta" => %{
"ip" => "192.168.1.2",
"ports" => [%{"Number" => 8082}, %{"Number" => 8083}]
}
}}
{:ok,
%{
"servers" => %{
"alpha" => %{
"ip" => "192.168.1.1",
"ports" => [%{"Number" => 8001}, %{"Number" => 8002}]
},
"beta" => %{
"ip" => "192.168.1.2",
"ports" => [%{"Number" => 8082}, %{"Number" => 8083}]
}
}
}}
iex(2)>
In the logs we can see that the key ports
never appear in the transform
function even if it is properly converted