2 def
initialize(outer
\\ nil
) do
4 %{outer
: outer
, env
: %{}}
8 def
set(pid
, key
, value) do
9 Agent
.update(pid
, fn map
->
10 %{map |
:env
=> Map
.put(map
.env
, key
, value)}
14 def
merge(pid
, env_values
) do
15 Agent
.update(pid
, fn map
->
16 %{map |
:env
=> Map
.merge(map
.env
, env_values
)}
21 Agent
.get(pid
, fn map
->
22 case Map
.has_key
?(map
.env
, key
) do
24 false
-> map
.outer
&& find(map
.outer
, key
)
29 def
retrieve_key(pid
, key
) do
30 Agent
.get(pid
, fn map
->
31 case Map
.fetch(map
.env
, key
) do
32 {:ok
, value} -> {:ok
, value}
39 case
find(pid
, key
) do
41 env
-> retrieve_key(env
, key
)