Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
0a9c473
Introduce elvis_ktn, and arity/1
paulo-ferraz-oliveira May 29, 2025
e69d414
Introduce elvis_ktn:location/1, elvis_ktn:line/1
paulo-ferraz-oliveira May 29, 2025
45a6926
Introduce elvis_ktn:name/1
paulo-ferraz-oliveira May 29, 2025
bc37eb8
rebar3 fmt it!
paulo-ferraz-oliveira May 29, 2025
56742e6
Increase consistency (and reduce definitions) for is_..._node
paulo-ferraz-oliveira May 29, 2025
fb38ef8
Approach functions
paulo-ferraz-oliveira May 29, 2025
ba5adb7
Introduce elvis_ktn:operation/1
paulo-ferraz-oliveira May 29, 2025
b72e0c8
Introduce elvis_ktn:text/1
paulo-ferraz-oliveira May 29, 2025
d49b053
Introduce elvis_ktn:tokens/1, elvis_ktn:value/1
paulo-ferraz-oliveira May 29, 2025
665b571
Introduce elvis_ktn:function/1
paulo-ferraz-oliveira May 29, 2025
79882f0
Introduce elvis_ktn:module/1
paulo-ferraz-oliveira May 29, 2025
5bfbba9
Introduce elvis_ktn:pattern/1
paulo-ferraz-oliveira May 29, 2025
880e8e3
Reuse what's available
paulo-ferraz-oliveira May 29, 2025
7597399
Rename it for consistency
paulo-ferraz-oliveira May 29, 2025
d4c0c3d
Create is_..._node functions for consistency
paulo-ferraz-oliveira May 29, 2025
e845299
Further simplify the predicates
paulo-ferraz-oliveira May 30, 2025
196c6b8
Be consistent with 'not'
paulo-ferraz-oliveira May 30, 2025
3b0bd00
Fix it per tests
paulo-ferraz-oliveira May 30, 2025
4a22593
Revert based on self-review
paulo-ferraz-oliveira May 30, 2025
aede55f
Get rid of elvis_ktn:arity/1
paulo-ferraz-oliveira May 30, 2025
a346384
Get rid of elvis_ktn:function/1
paulo-ferraz-oliveira May 30, 2025
60b717d
Get rid of elvis_ktn:line/1
paulo-ferraz-oliveira May 30, 2025
98b5394
Get rid of elvis_ktn:location/1
paulo-ferraz-oliveira May 30, 2025
a015475
Get rid of elvis_ktn:module/1
paulo-ferraz-oliveira May 30, 2025
ef7f3ab
Get rid of elvis_ktn:name/1
paulo-ferraz-oliveira May 30, 2025
b35afd1
Get rid of elvis_ktn:operation/1
paulo-ferraz-oliveira May 30, 2025
e914211
Get rid of elvis_ktn:pattern/1
paulo-ferraz-oliveira May 30, 2025
a3928c7
Get rid of elvis_ktn:text/1
paulo-ferraz-oliveira May 30, 2025
593ad68
Get rid of elvis_ktn:tokens/1
paulo-ferraz-oliveira May 30, 2025
2663531
Get rid of elvis_ktn:value/1 (and with it, the module it's in)
paulo-ferraz-oliveira May 30, 2025
bdb17ab
Reduce number of changes (when not relevant, except for naming)
paulo-ferraz-oliveira May 30, 2025
cb2444f
Move `case ... is_..._` back to `case ... ktn_code:type(...`
paulo-ferraz-oliveira May 30, 2025
0ba557e
Reduce to single-call functions that aren't reused
paulo-ferraz-oliveira May 30, 2025
7e2a49e
Test an alternative on simplification
paulo-ferraz-oliveira May 30, 2025
000b661
Signal stuff for follow-up
paulo-ferraz-oliveira May 30, 2025
ac198a2
Make for consistency: move predicate to only place it's used
paulo-ferraz-oliveira May 30, 2025
f4b3c56
Update some more, to get a feel of the end result
paulo-ferraz-oliveira May 30, 2025
4abca60
Prefer strict equivalence
paulo-ferraz-oliveira May 30, 2025
e38f0d6
Continue on our path to ~glory~ simplicity
paulo-ferraz-oliveira May 30, 2025
29b7ece
Move predication definitions closer to where they're used
paulo-ferraz-oliveira May 30, 2025
185c063
Increase consistency
paulo-ferraz-oliveira May 30, 2025
ed9dc9d
Name our predicates
paulo-ferraz-oliveira May 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion src/elvis_code.erl
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
-module(elvis_code).

%% General
-export([find/2, find/3, find_by_location/2, find_token/2, code_zipper/1, code_zipper/2]).
-export([
find/2,
find/3,
find_by_location/2,
find_by_names/2,
find_by_types/2,
find_by_types/3,
find_by_types_in_tokens/2,
find_token/2,
code_zipper/1,
code_zipper/2
]).
%% Specific
-export([
past_nesting_limit/2,
Expand Down Expand Up @@ -134,6 +145,35 @@ find_by_location(Root, Location) ->
{ok, Node}
end.

find_by_names(Names, Root) ->
find(
fun(Node) ->
lists:member(ktn_code:attr(name, Node), Names)
end,
Root
).

find_by_types(Types, Root) ->
find_by_types(Types, Root, #{mode => node, traverse => content}).

find_by_types(Types, Root, Opts) ->
find(
fun(Node) ->
lists:member(ktn_code:type(Node), Types)
end,
Root,
Opts
).

find_by_types_in_tokens(Types, Root) ->
Tokens = ktn_code:attr(tokens, Root),
lists:filter(
fun(Node) ->
lists:member(ktn_code:type(Node), Types)
end,
Tokens
).

is_at_location(#{attrs := #{location := {Line, NodeCol}}} = Node, {Line, Column}) ->
Text = ktn_code:attr(text, Node),
Length = length(Text),
Expand Down
Loading