Behaviour.Reflection
Get all modules implementing an Elixir behaviour.
See this article for an analysis of the problem, the circumstances for when to use this library, how it works and its caveats.
Installation
The Hex package can be installed as usual, by adding behaviour_reflection to your list of dependencies in mix.exs:
def deps do
[
{:behaviour_reflection, "~> 0.1"}
]
endUsage
Let's say you have a behaviour and a number of modules implementing it:
defmodule MyBehaviour do
@callback fun :: String.t
end
defmodule Foo do
@behaviour MyBehaviour
def fun(), do: "foo"
end
defmodule Bar do
@behaviour MyBehaviour
def fun(), do: "bar"
endAt runtime you can retrieve all modules implementing the behaviour like this:
iex> Behaviour.Reflection.impls(MyBehaviour)
[Foo, Bar]Documentation can be found at https://hexdocs.pm/behaviour_reflection.