rubocop-pixelforce 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/default.yml +1 -1
- data/lib/rubocop/cop/pixelforce/empty_line_between_categories.rb +28 -42
- data/lib/rubocop/pixelforce/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dc1398a26eafed01afb1086e384b88c2517c59aea472adf10bf00fa7a926b32
|
4
|
+
data.tar.gz: d34ff5b7a043877d940f5ab0a6ff23b6f6912d3107ab7dc26f0b9b3950a1b4d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba321811d6aea779cb44df0d90043a710b0c2d59def640d93b04a41bf4556694e82492223b9cb5c2945f9ea0a11736607785a7f048b81045cdc8e72f3f3e1cc7
|
7
|
+
data.tar.gz: 2714bc7fda30fd45e994616096752dd2549e92dd114fd022a7d6f4c53f298973e4dee549071ce1a227210082bdfa054eea37b17a0f81f458418d28b3543a29f7
|
data/Gemfile.lock
CHANGED
data/default.yml
CHANGED
@@ -3,16 +3,19 @@ module RuboCop
|
|
3
3
|
module Pixelforce
|
4
4
|
class EmptyLineBetweenCategories < Base
|
5
5
|
include RangeHelp
|
6
|
+
extend AutoCorrector
|
6
7
|
|
7
8
|
HUMANIZED_NODE_TYPE = {
|
8
9
|
casgn: :constants,
|
9
10
|
defs: :class_methods,
|
10
11
|
def: :public_methods,
|
11
|
-
sclass: :class_singleton
|
12
|
+
sclass: :class_singleton,
|
13
|
+
send: :method_calls
|
12
14
|
}.freeze
|
13
15
|
|
14
16
|
VISIBILITY_SCOPES = %i[private protected public].freeze
|
15
|
-
|
17
|
+
MSG_EMPTY_LINE_BETWEEN_CATEGORIES = 'Use empty lines between categories.'.freeze
|
18
|
+
MSG_EMPTY_LINE_BETWEEN_SAME_CATEGORIES = "Don't Use empty lines between same categories.".freeze
|
16
19
|
|
17
20
|
def_node_matcher :visibility_block?, <<~PATTERN
|
18
21
|
(send nil? { :private :protected :public })
|
@@ -22,36 +25,33 @@ module RuboCop
|
|
22
25
|
# Add offense when find a node out of expected order.
|
23
26
|
def on_class(class_node)
|
24
27
|
previous_category = nil
|
25
|
-
previous_node_end_line = -1
|
26
|
-
previous_method_name = nil
|
27
|
-
walk_over_nested_class_definition(class_node) do |node, category|
|
28
|
-
next unless node.respond_to?(:method_name)
|
29
28
|
|
30
|
-
|
31
|
-
|
29
|
+
walk_over_nested_class_definition(class_node) do |node, category|
|
30
|
+
if previous_category && previous_category != category
|
31
|
+
count = blank_lines_count_between(prev_node(node), node)
|
32
|
+
if count < 2
|
33
|
+
add_offense(node, message: MSG_EMPTY_LINE_BETWEEN_CATEGORIES) do |corrector|
|
34
|
+
prev_category = prev_node(node)
|
35
|
+
end_pos = end_position_for(prev_category)
|
36
|
+
newline_pos = buffer.source.index("\n", end_pos)
|
37
|
+
where_to_insert = range_between(newline_pos, newline_pos + 1)
|
38
|
+
corrector.insert_after(where_to_insert, "\n")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
elsif previous_category && previous_category == category
|
42
|
+
count = blank_lines_count_between(prev_node(node), node)
|
43
|
+
if count > 1
|
44
|
+
add_offense(node, message: MSG_EMPTY_LINE_BETWEEN_SAME_CATEGORIES) do |corrector|
|
45
|
+
prev_category = prev_node(node)
|
46
|
+
end_pos = end_position_for(prev_category)
|
47
|
+
newline_pos = buffer.source.index("\n", end_pos)
|
48
|
+
range_to_remove = range_between(newline_pos, newline_pos + 1)
|
49
|
+
corrector.remove(range_to_remove)
|
50
|
+
end
|
51
|
+
end
|
32
52
|
end
|
33
53
|
|
34
|
-
if previous_method_name && previous_method_name == node.method_name && node.loc.first_line - previous_node_end_line > 1
|
35
|
-
add_offense(node, message: "Don't Use empty lines between same categories.")
|
36
|
-
end
|
37
54
|
previous_category = category
|
38
|
-
previous_node_end_line = node.loc.last_line
|
39
|
-
previous_method_name = node.method_name
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def autocorrect(node)
|
44
|
-
prev_category = prev_node(node)
|
45
|
-
# finds position of first newline
|
46
|
-
end_pos = end_position_for(prev_category)
|
47
|
-
newline_pos = buffer.source.index("\n", end_pos)
|
48
|
-
|
49
|
-
count = blank_lines_count_between(prev_category, node)
|
50
|
-
|
51
|
-
if count > 1
|
52
|
-
autocorrect_remove_lines(newline_pos, count)
|
53
|
-
else
|
54
|
-
autocorrect_insert_lines(newline_pos, count)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -221,20 +221,6 @@ module RuboCop
|
|
221
221
|
def categories
|
222
222
|
cop_config['Categories']
|
223
223
|
end
|
224
|
-
|
225
|
-
def autocorrect_remove_lines(newline_pos, _count)
|
226
|
-
range_to_remove = range_between(newline_pos, newline_pos + 1)
|
227
|
-
lambda do |corrector|
|
228
|
-
corrector.remove(range_to_remove)
|
229
|
-
end
|
230
|
-
end
|
231
|
-
|
232
|
-
def autocorrect_insert_lines(newline_pos, _count)
|
233
|
-
where_to_insert = range_between(newline_pos, newline_pos + 1)
|
234
|
-
lambda do |corrector|
|
235
|
-
corrector.insert_after(where_to_insert, "\n")
|
236
|
-
end
|
237
|
-
end
|
238
224
|
end
|
239
225
|
end
|
240
226
|
end
|