TypeClass v1.0.0-alpha4 TypeClass.Utility.Module

Naming convention helpers to help follow TypeClass conventions

Summary

Functions

Generate the module name for the protocol portion of the class. Does not nest Protocols

Generate the module name for the protocol portion of the class. Does not nest Protocols

Generate a submodule name. If the module already ends in the requested submodule, it will return the module name unchanged

Types

ast()
ast() :: tuple

Functions

append(parent_module, submodule)
get_functions(module)
to_property(base_module)
to_property(module) :: module

Generate the module name for the protocol portion of the class. Does not nest Protocols.

Examples

iex> to_property MyClass.Awesome
MyClass.Awesome.Property

iex> to_property MyClass.Awesome.Property
MyClass.Awesome.Property
to_protocol(base_module)
to_protocol(module) :: module

Generate the module name for the protocol portion of the class. Does not nest Protocols.

Examples

iex> to_protocol MyClass.Awesome
MyClass.Awesome.Protocol

iex> to_protocol MyClass.Awesome.Protocol
MyClass.Awesome.Protocol
to_submodule(base_module, child_name)
to_submodule(module, String.t | module) :: module

Generate a submodule name. If the module already ends in the requested submodule, it will return the module name unchanged.

Examples

iex> MyModule.Awesome |> to_submodule(Submodule)
MyModule.Awesome.Submodule

iex> MyModule.Awesome |> to_submodule("Submodule")
MyModule.Awesome.Submodule

iex> MyModule.Awesome.Submodule |> to_submodule(Submodule)
MyModule.Awesome.Submodule