defmodule Credo.IssueMeta do @moduledoc """ IssueMeta provides helper functions for meta information which a check wants to pass to the `issue_for(...)` function, i.e. the current SourceFile and check params (by default). """ @type t :: {__MODULE__, Credo.SourceFile.t(), Keyword.t()} alias Credo.SourceFile @doc "Returns an issue meta tuple for the given `source_file` and `check_params`." def for(source_file, check_params) do {__MODULE__, source_file, check_params} end @doc "Returns the source file for the given `issue_meta`." def source_file(issue_meta) def source_file(%{source_file: source_file, params: _}), do: source_file def source_file({__MODULE__, source_file, _params}), do: source_file def source_file(%SourceFile{} = source_file), do: source_file @doc "Returns the check params for the given `issue_meta`." def params(issue_meta) def params(%{source_file: _, params: check_params}), do: check_params def params({__MODULE__, _source_file, check_params}), do: check_params def params(%SourceFile{}), do: [] end