Skip to content

Instantly share code, notes, and snippets.

@ReticentIris
Created January 19, 2017 06:26
Show Gist options
  • Save ReticentIris/b82a2eb086720086a1c918c8a2b8464d to your computer and use it in GitHub Desktop.
Save ReticentIris/b82a2eb086720086a1c918c8a2b8464d to your computer and use it in GitHub Desktop.
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