Credence.RuleHelpers
(credence v0.4.3)
Copy Markdown
Shared utilities used by all three Credence phases (Syntax, Semantic, Pattern).
Provides rule discovery, diff computation, and change logging so the phase modules don't duplicate this plumbing.
Summary
Functions
Computes a line-by-line diff between two strings.
Returns all modules implementing behaviour, sorted by priority
(lower first) with module name as tiebreaker for determinism.
Returns true if module declares behaviour in its @behaviour attribute.
Logs a before/after diff under a [credence_fix] prefix.
Returns the short name of a rule module for logging.
Functions
@spec diff_lines(String.t(), String.t()) :: [ {:removed, pos_integer(), String.t()} | {:added, pos_integer(), String.t()} ]
Computes a line-by-line diff between two strings.
Returns a list of {:removed, line_no, text} and {:added, line_no, text}
tuples for every line that changed.
Returns all modules implementing behaviour, sorted by priority
(lower first) with module name as tiebreaker for determinism.
iex> Credence.RuleHelpers.discover_rules(Credence.Pattern.Rule)
[Credence.Pattern.SomeRule, ...]
Returns true if module declares behaviour in its @behaviour attribute.
Logs a before/after diff under a [credence_fix] prefix.
Shows up to 10 changed lines; appends a count of remaining changes if the diff is larger.
Returns the short name of a rule module for logging.
iex> Credence.RuleHelpers.rule_name(Credence.Pattern.NoSortThenAt)
"NoSortThenAt"