lib/r_enum.ex

defmodule REnum do
  @moduledoc """
  Entry point of Enum extensions, and can use all of REnum.* functions.
  See also
   - [REnum.Native](https://hexdocs.pm/r_enum/REnum.Native.html#content)
   - [REnum.Ruby](https://hexdocs.pm/r_enum/REnum.Ruby.html#content)
   - [REnum.ActiveSupport](https://hexdocs.pm/r_enum/REnum.ActiveSupport.html#content)
   - [REnum.Support](https://hexdocs.pm/r_enum/REnum.Support.html#content)
  """
  defmacro __using__(opts) do
    undelegate_functions = Keyword.get(opts, :undelegate_functions, [])
    RUtils.define_all_functions!(__MODULE__, elem(Code.eval_quoted(undelegate_functions), 0))
  end

  use REnum.Native
  use REnum.Ruby
  use REnum.ActiveSupport
  use REnum.Support
end