cover/Elixir.Cfgs.html

1 defmodule Cfgs do
2 import Enum, only: [map: 2, reject: 2, flat_map: 2, uniq: 1]
3 import List, only: [flatten: 1]
4 import Map, only: [get: 3]
5 import Cfg, only: [config: 1]
6
7 def load(names) when is_list(names) do
8 names
9 |> expand()
10 58 |> map(&config/1)
11 end
12
13
:-(
def load(name), do: config(name)
14
15 def value(key, configs) do
16 configs
17
:-(
|> flat_map(&get(&1, key, []))
18
:-(
|> uniq()
19 end
20
21 defp expand(list) do
22 66 deps = gather(list)
23 66 expand(list, deps)
24 end
25
26 defp gather(list) do
27 list
28 |> map(&deps/1)
29 |> flatten()
30 66 |> reject(&(&1 in list))
31 end
32
33 58 defp expand(list, []), do: list
34 8 defp expand(list, deps), do: expand(list ++ deps)
35
36 defp deps(name) do
37 84 config(name) |> includes()
38 end
39
40 defp includes(config) do
41 84 get(config, :includes, [])
42 end
43 end
Line Hits Source