Created
January 19, 2017 06:26
-
-
Save ReticentIris/b82a2eb086720086a1c918c8a2b8464d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Tree do | |
defstruct value, dependents: [], children %{} | |
end | |
defp get_dependents_tokens_continue?(nil, tokens) do: | |
[] | |
end | |
defp get_dependents_tokens_continue?((%Tree{value: value, dependents: dependents, children: children}, tokens) do: | |
get_dependents_tokens((%Tree{value: value, dependents: dependents, children: children}, tl(tokens)) | |
end | |
defp get_dependents_tokens((%Tree{value: value, dependents: dependents, children: children}, []) do: | |
dependents | |
end | |
defp get_dependents_tokens((%Tree{value: value, dependents: dependents, children: children}, tokens) do: | |
Map.get(children, hd(tokens)) |> get_dependents_tokens_continue?(tokens) | |
end | |
def get_dependents((%Tree{value: value, dependents: dependents, children: children}, key) when is_bitstring(key) do: | |
get_dependents_tokens((%Tree{value: value, dependents: dependents, children: children}, String.split(key, ".")) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment