View Source Erlex (Erlex v0.2.7)

Convert Erlang style structs and error messages to equivalent Elixir.

Lexes and parses the Erlang output, then runs through pretty printer.

Usage

Invoke Erlex.pretty_print/1 wuth the input string.

iex> str = ~S"('Elixir.Plug.Conn':t(),binary() | atom(),'Elixir.Keyword':t() | map()) -> 'Elixir.Plug.Conn':t()"
iex> Erlex.pretty_print(str)
(Plug.Conn.t(), binary() | atom(), Keyword.t() | map()) :: Plug.Conn.t()

While the lion's share of the work is done via invoking Erlex.pretty_print/1, other higher order functions exist for further formatting certain messages by running through the Elixir formatter. Because we know the previous example is a type, we can invoke the Erlex.pretty_print_contract/1 function, which would format that appropriately for very long lines.

iex> str = ~S"('Elixir.Plug.Conn':t(),binary() | atom(),'Elixir.Keyword':t() | map(), map() | atom(), non_neg_integer(), binary(), binary(), binary(), binary(), binary()) -> 'Elixir.Plug.Conn':t()"
iex> Erlex.pretty_print_contract(str)
(
  Plug.Conn.t(),
  binary() | atom(),
  Keyword.t() | map(),
  map() | atom(),
  non_neg_integer(),
  binary(),
  binary(),
  binary(),
  binary(),
  binary()
) :: Plug.Conn.t()

Summary

Functions

@spec pretty_print(str :: String.t()) :: String.t()
@spec pretty_print_args(args :: String.t()) :: String.t()
Link to this function

pretty_print_contract(contract)

View Source
@spec pretty_print_contract(contract :: String.t()) :: String.t()
Link to this function

pretty_print_contract(contract, module, function)

View Source
@spec pretty_print_contract(
  contract :: String.t(),
  module :: String.t(),
  function :: String.t()
) :: String.t()
Link to this function

pretty_print_infix(infix)

View Source
@spec pretty_print_infix(infix :: String.t()) :: String.t()
Link to this function

pretty_print_pattern(pattern)

View Source
@spec pretty_print_pattern(pattern :: String.t()) :: String.t()
@spec pretty_print_type(type :: String.t()) :: String.t()