Locates literal modules in project source on both sides of a diff.
The scan recognizes defmodule and defprotocol, including lexically
nested modules. Modules built through Module.create/3 or a non-literal
module name are invisible by design.
Summary
Functions
Builds the per-side module-to-source maps for a project and change set.
Returns all literal module names found on side.
Returns the path defining module on side, or :error.
Types
@type module_name() :: String.t()
@type side() :: :head | :base
@type t() :: %Ancora.Derive.ModuleLocator{ base: %{required(module_name()) => String.t()}, head: %{required(module_name()) => String.t()} }
Functions
@spec build(Ancora.ProjectInfo.t(), Ancora.Derive.ChangeSet.t()) :: {:ok, t()} | {:error, term()}
Builds the per-side module-to-source maps for a project and change set.
Returns all literal module names found on side.
Returns the path defining module on side, or :error.