Packages
testcontainers
1.12.0
2.3.1
2.3.0
2.2.0
2.1.0
2.1.0-rc1
2.0.0
2.0.0-rc3
2.0.0-rc2
2.0.0-rc
1.14.1
1.14.0
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.8
1.11.7
1.11.6
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.2
1.4.1
1.4.0
1.3.1
1.3.0
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-beta.1
1.0.0-beta
0.9.3
0.9.2
0.9.1
0.9.0
Testcontainers is an Elixir library that supports ExUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Current section
Files
Jump to
Current section
Files
lib/util/struct.ex
defmodule Testcontainers.Util.ListFromDeepStruct do
def from_deep_struct(%{} = map), do: convert(map)
defp convert(%Regex{} = data) do
Regex.source(data)
end
defp convert(data) when is_tuple(data) do
Tuple.to_list(data) |> convert()
end
defp convert(data) when is_list(data) do
data
# Recursively convert each list element
|> Enum.map(&convert/1)
end
defp convert(data) when is_struct(data) do
data
|> Map.from_struct()
# Recursively convert the struct (now a map)
|> convert()
end
defp convert(data) when is_map(data) do
data
# Convert the map to a list of key-value tuples
|> Map.to_list()
# Filter out entries with nil values
|> Enum.reject(fn {_k, v} -> is_nil(v) end)
# Recursively convert both keys and values
|> Enum.map(fn {k, v} -> {k, convert(v)} end)
# Sort the list to ensure deterministic order
|> Enum.sort()
end
defp convert(other), do: other
end