View Source Igniter.Code.Module (igniter v0.4.0)

Utilities for working with Elixir modules

Summary

Functions

Creates a new file & module in its appropriate location.

Finds a module and updates its contents. Returns {:error, igniter} if the module could not be found. Do not discard this igniter.

Finds a module and updates its contents wherever it is.

Finds a module, returning a new igniter, and the source and zipper location. This new igniter should not be discarded.

Finds a module, raising an error if its not found.

Checks if a module is defined somewhere in the project. The returned igniter should not be discarded.

Checks if the value is a module that matches a given predicate

module_name(suffix) deprecated

Given a suffix, returns a module name with the prefix of the current project.

Given a suffix, returns a module name with the prefix of the current project.

The module name prefix based on the mix project's module name

The module name prefix based on the mix project's module name

Moves the zipper to a defmodule call

Moves the zipper to a specific defmodule call

Moves the zipper to the body of a module that uses the provided module (or one of the provided modules).

Moves the zipper to the use statement for a provided module.

parse(module_name) deprecated

Parses a string into a module name

Returns the idiomatic file location for a given module, starting with "lib/".

Returns the test file location for a given module, according to mix test expectations, starting with "test/" and ending with "_test.exs".

Returns the test support location for a given module, starting with "test/support/" and dropping the module name prefix in the path.

Functions

Link to this function

create_module(igniter, module_name, contents, opts \\ [])

View Source
This function is deprecated. Use `Igniter.Project.Module.create_module/4` instead.

Creates a new file & module in its appropriate location.

Link to this function

find_all_matching_modules(igniter, predicate)

View Source
This function is deprecated. Use `Igniter.Project.Module.find_all_matching_modules/2` instead.
@spec find_all_matching_modules(igniter :: Igniter.t(), (module(),
                                                   Sourceror.Zipper.t() ->
                                                     boolean())) ::
  {Igniter.t(), [module()]}
Link to this function

find_and_update_module(igniter, module_name, updater)

View Source
This function is deprecated. Use `Igniter.Project.Module.find_and_update_module/3` instead.
@spec find_and_update_module(Igniter.t(), module(), (Sourceror.Zipper.t() ->
                                                 {:ok, Sourceror.Zipper.t()}
                                                 | :error)) ::
  {:ok, Igniter.t()} | {:error, Igniter.t()}

Finds a module and updates its contents. Returns {:error, igniter} if the module could not be found. Do not discard this igniter.

Link to this function

find_and_update_module!(igniter, module_name, updater)

View Source
This function is deprecated. Use `Igniter.Project.Module.find_and_update_module!/3` instead.
Link to this function

find_and_update_or_create_module(igniter, module_name, contents, updater, opts \\ [])

View Source
This function is deprecated. Use `Igniter.Project.Module.find_and_update_or_create_module/5` instead.

Finds a module and updates its contents wherever it is.

If the module does not yet exist, it is created with the provided contents. In that case, the path is determined with Igniter.Code.Module.proper_location/2, but may optionally be overwritten with options below.

Options

  • :path - Path where to create the module, relative to the project root. Default: nil (uses :kind to determine the path).
Link to this function

find_module(igniter, module_name)

View Source
This function is deprecated. Use `Igniter.Project.Module.find_module/2` instead.
@spec find_module(Igniter.t(), module()) ::
  {:ok, {Igniter.t(), Rewrite.Source.t(), Sourceror.Zipper.t()}}
  | {:error, Igniter.t()}

Finds a module, returning a new igniter, and the source and zipper location. This new igniter should not be discarded.

In general, you should not use the returned source and zipper to update the module, instead, use this to interrogate the contents or source in some way, and then call find_and_update_module/3 with a function to perform an update.

Link to this function

find_module!(igniter, module_name)

View Source
This function is deprecated. Use `Igniter.Project.Module.find_module!/2` instead.
@spec find_module!(Igniter.t(), module()) ::
  {Igniter.t(), Rewrite.Source.t(), Sourceror.Zipper.t()} | no_return()

Finds a module, raising an error if its not found.

See find_module/2 for more information.

Link to this function

module_exists?(igniter, module_name)

View Source
This function is deprecated. Use `Igniter.Project.Module.module_exists/2` instead.

Checks if a module is defined somewhere in the project. The returned igniter should not be discarded.

Link to this function

module_matching?(zipper, pred)

View Source

Checks if the value is a module that matches a given predicate

This function is deprecated. Use `module_name/2` instead..
@spec module_name(String.t()) :: module()

Given a suffix, returns a module name with the prefix of the current project.

Link to this function

module_name(igniter, suffix)

View Source
This function is deprecated. Use `Igniter.Project.Module.module_name/2` instead..
@spec module_name(Igniter.t(), String.t()) :: module()

Given a suffix, returns a module name with the prefix of the current project.

This function is deprecated. Use `Igniter.Project.Module.module_name_prefix/1` instead.
@spec module_name_prefix() :: module()

The module name prefix based on the mix project's module name

Link to this function

module_name_prefix(igniter)

View Source
This function is deprecated. Use `Igniter.Project.Module.module_name_prefix/1` instead.
@spec module_name_prefix(Igniter.t()) :: module()

The module name prefix based on the mix project's module name

Link to this function

move_to_def(zipper, fun, arity)

View Source
This function is deprecated. Use `Igniter.Code.Function.move_to_def/3` instead.
Link to this function

move_to_defmodule(zipper)

View Source
@spec move_to_defmodule(Sourceror.Zipper.t()) :: {:ok, Sourceror.Zipper.t()} | :error

Moves the zipper to a defmodule call

Link to this function

move_to_defmodule(zipper, module)

View Source
@spec move_to_defmodule(Sourceror.Zipper.t(), module()) ::
  {:ok, Sourceror.Zipper.t()} | :error

Moves the zipper to a specific defmodule call

Link to this function

move_to_defp(zipper, fun, arity)

View Source
This function is deprecated. Use `Igniter.Code.Function.move_to_defp/3` instead.
Link to this function

move_to_module_using(zipper, one_of_modules)

View Source
@spec move_to_module_using(Sourceror.Zipper.t(), module() | [module()]) ::
  {:ok, Sourceror.Zipper.t()} | :error

Moves the zipper to the body of a module that uses the provided module (or one of the provided modules).

Link to this function

move_to_use(zipper, module)

View Source

Moves the zipper to the use statement for a provided module.

Link to this function

move_to_using(zipper, module)

View Source
This function is deprecated. Use `move_to_use/2` instead..
This function is deprecated. Use `Igniter.Project.Module.parse/1` instead..
@spec parse(String.t()) :: module()

Parses a string into a module name

Link to this function

proper_location(module_name, source_folder \\ "lib")

View Source
This function is deprecated. Use `Igniter.Project.Module.proper_location/3`.
@spec proper_location(module(), source_folder :: String.t()) :: Path.t()

Returns the idiomatic file location for a given module, starting with "lib/".

Link to this function

proper_test_location(module_name)

View Source
This function is deprecated. Use `Igniter.Project.Module.proper_location/3`.
@spec proper_test_location(module()) :: Path.t()

Returns the test file location for a given module, according to mix test expectations, starting with "test/" and ending with "_test.exs".

Link to this function

proper_test_support_location(module_name)

View Source
This function is deprecated. Use `Igniter.Project.Module.proper_location/3`.
@spec proper_test_support_location(module()) :: Path.t()

Returns the test support location for a given module, starting with "test/support/" and dropping the module name prefix in the path.