A collection of ExOKF.Diagnostic entries with aggregation helpers.
Fields
| Field | Type | Description |
|---|---|---|
entries | [ExOKF.Diagnostic.t()] | Ordered list of diagnostics. |
Example
%ExOKF.Diagnostics{
entries: [
%ExOKF.Diagnostic{severity: :error, code: :missing_type, message: "missing required type field", path: "x.md"},
%ExOKF.Diagnostic{severity: :warning, code: :broken_internal_link, message: "broken internal link", path: "y.md"}
]
}
Summary
Functions
Appends a single diagnostic.
Returns diagnostics of the given severity.
Appends many diagnostics from another collection or a list.
Counts diagnostics by severity.
Returns true when any :error diagnostic is present.
Formats all diagnostics, one per line.
Creates an empty diagnostics collection.
Creates a diagnostics collection from a list of entries.
Types
@type t() :: %ExOKF.Diagnostics{entries: [ExOKF.Diagnostic.t()]}
A diagnostics collection.
See the module documentation for the entries field.
Functions
@spec add(t(), ExOKF.Diagnostic.t()) :: t()
Appends a single diagnostic.
Parameters
diags(t/0) — existing collectionentry(ExOKF.Diagnostic.t()) — diagnostic to append
Examples
iex> d = %ExOKF.Diagnostic{severity: :warning, code: :w, message: "warn"}
iex> ExOKF.Diagnostics.add(ExOKF.Diagnostics.new(), d).entries
[d]
@spec by_severity(t(), ExOKF.Diagnostic.severity()) :: [ExOKF.Diagnostic.t()]
Returns diagnostics of the given severity.
Parameters
diags(t/0) — collection to filterseverity(ExOKF.Diagnostic.severity()) —:error,:warning, or:info
Examples
iex> w = %ExOKF.Diagnostic{severity: :warning, code: :w, message: "w"}
iex> e = %ExOKF.Diagnostic{severity: :error, code: :e, message: "e"}
iex> ExOKF.Diagnostics.by_severity(ExOKF.Diagnostics.new([w, e]), :warning)
[w]
@spec concat(t(), t() | [ExOKF.Diagnostic.t()]) :: t()
Appends many diagnostics from another collection or a list.
Parameters
left(t/0) — existing collectionright(t:t/0 \| [ExOKF.Diagnostic.t()]) — diagnostics to append
Examples
iex> a = %ExOKF.Diagnostic{severity: :info, code: :a, message: "a"}
iex> b = %ExOKF.Diagnostic{severity: :info, code: :b, message: "b"}
iex> result = ExOKF.Diagnostics.concat(ExOKF.Diagnostics.new([a]), [b])
iex> Enum.map(result.entries, & &1.code)
[:a, :b]
@spec counts(t()) :: %{ error: non_neg_integer(), warning: non_neg_integer(), info: non_neg_integer() }
Counts diagnostics by severity.
Parameters
diags(t/0) — collection to summarize
Examples
iex> w = %ExOKF.Diagnostic{severity: :warning, code: :w, message: "w"}
iex> ExOKF.Diagnostics.counts(ExOKF.Diagnostics.new([w]))
%{error: 0, warning: 1, info: 0}
Returns true when any :error diagnostic is present.
Parameters
diags(t/0) — collection to inspect
Examples
iex> ExOKF.Diagnostics.errors?(ExOKF.Diagnostics.new())
false
iex> d = %ExOKF.Diagnostic{severity: :error, code: :e, message: "e"}
iex> ExOKF.Diagnostics.errors?(ExOKF.Diagnostics.new([d]))
true
Formats all diagnostics, one per line.
Parameters
diags(t/0) — collection to format
Examples
iex> d = %ExOKF.Diagnostic{severity: :error, code: :e, message: "boom", path: "x.md"}
iex> ExOKF.Diagnostics.format(ExOKF.Diagnostics.new([d]))
"error: boom (x.md)"
@spec new() :: t()
Creates an empty diagnostics collection.
Examples
iex> ExOKF.Diagnostics.new()
%ExOKF.Diagnostics{entries: []}
@spec new([ExOKF.Diagnostic.t()]) :: t()
Creates a diagnostics collection from a list of entries.
Parameters
entries([ExOKF.Diagnostic.t()]) — initial diagnostics
Examples
iex> d = %ExOKF.Diagnostic{severity: :info, code: :note, message: "hi"}
iex> ExOKF.Diagnostics.new([d]).entries
[d]