Modkit.Mod (modkit v0.8.1)

View Source

Summary

Functions

Returns the module that is a local root of all given modules. That is a common prefix of all given modules that is also a module from the list.

Given two module names, returns the module name that is a prefix of the other, or nil if the two names are disjoint.

Returns the top module namespaces that are prefix to all other modules and that is also a module from the list.

Functions

current_path(module, relative_to \\ File.cwd!())

group_by_file(modules, relative_to \\ File.cwd!())

list_all(otp_app)

local_root(mods)

@spec local_root([module()]) :: module() | nil

Returns the module that is a local root of all given modules. That is a common prefix of all given modules that is also a module from the list.

For instance, modules A and A.B have a common prefix that is A, and A is provided as an argument, so it will be returned.

But if only A.B and A.C are provided, the common prefix A will not be returned since it is not one of the arguments.

Examples

iex> local_root([A, A.B])
A

iex> local_root([A.B, A.C, A])
A

iex> local_root([A.B, A.C])
nil

iex> local_root([])
nil

local_root(a, b)

@spec local_root(module(), module()) :: module() | nil

Given two module names, returns the module name that is a prefix of the other, or nil if the two names are disjoint.

See local_root/1.

Examples

iex> local_root(A, A.B)
A

iex> local_root(A.B, A.C)
nil

local_roots(mods)

Returns the top module namespaces that are prefix to all other modules and that is also a module from the list.

See local_root/1

Examples

iex> local_roots([A, A.B, X.Y, X])
[A, X]

iex> local_roots([A.B, A.C, A, X, X, X.Y, X.Y.Z])
[A,X]

iex> local_roots([A.B, A.C])
[A.B, A.C]

iex> local_roots([A.B.C1, A.B.C2])
[A.B.C1, A.B.C2]

iex> local_roots([A.B.C1, A.B.C2, A.B])
[A.B]