rubocop-pixelforce 0.3 → 0.4
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c39237d29ba2cb32b80ca7537a40b943a217099d499cbf65dfe40da2e07e3483
|
4
|
+
data.tar.gz: d7d8fd1807d26e2581b871c46cdde1672058300d2bbb206ab46b4f184b1adf1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d17544bd7582c2031329d6969ee1631ea973be725b0ba7c5b05f4c8875684ce0a8b07601204519bb499c0d976857489d323c268485340322a7883015c0faea33
|
7
|
+
data.tar.gz: 2e93ca8bb8f766cd4ba52adc19ffea77de99cc65274102e06d7f33b4c5b890b315045145dee5a2b8ebaef112bd4a53931aec4c47e00330af8abace65a63cfcc7
|
data/Gemfile.lock
CHANGED
data/default.yml
CHANGED
@@ -22,7 +22,7 @@ Rails/HasManyOrHasOneDependent:
|
|
22
22
|
Rails/FilePath:
|
23
23
|
Enabled: false
|
24
24
|
|
25
|
-
|
25
|
+
Layout/ClassStructure: &class_structures
|
26
26
|
Enabled: true
|
27
27
|
ExpectedOrder:
|
28
28
|
- module_inclusion
|
@@ -76,6 +76,10 @@ Pixelforce/ClassStructure:
|
|
76
76
|
- prepend
|
77
77
|
- extend
|
78
78
|
|
79
|
+
Pixelforce/EmptyLineBwteenCategories:
|
80
|
+
<<: *class_structures
|
81
|
+
Enabled: true
|
82
|
+
|
79
83
|
Layout/AlignHash:
|
80
84
|
EnforcedColonStyle: table
|
81
85
|
|
data/lib/rubocop-pixelforce.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
module RuboCop
|
2
2
|
module Cop
|
3
3
|
module Pixelforce
|
4
|
-
class
|
4
|
+
class EmptyLineBwteenCategories < Cop
|
5
|
+
include RangeHelp
|
6
|
+
|
5
7
|
HUMANIZED_NODE_TYPE = {
|
6
8
|
casgn: :constants,
|
7
9
|
defs: :class_methods,
|
@@ -10,8 +12,7 @@ module RuboCop
|
|
10
12
|
}.freeze
|
11
13
|
|
12
14
|
VISIBILITY_SCOPES = %i[private protected public].freeze
|
13
|
-
MSG = '
|
14
|
-
'`%<previous>s`.'
|
15
|
+
MSG = 'Use empty lines between categories.'
|
15
16
|
|
16
17
|
def_node_matcher :visibility_block?, <<~PATTERN
|
17
18
|
(send nil? { :private :protected :public })
|
@@ -20,22 +21,13 @@ module RuboCop
|
|
20
21
|
# Validates code style on class declaration.
|
21
22
|
# Add offense when find a node out of expected order.
|
22
23
|
def on_class(class_node)
|
23
|
-
previous = -1
|
24
24
|
previous_category = nil
|
25
25
|
previous_node_end_line = -1
|
26
26
|
previous_method_name = nil
|
27
27
|
walk_over_nested_class_definition(class_node) do |node, category|
|
28
|
-
index = expected_order.index(category)
|
29
|
-
if index < previous
|
30
|
-
message = format(MSG, category: category,
|
31
|
-
previous: expected_order[previous])
|
32
|
-
add_offense(node, message: message)
|
33
|
-
end
|
34
|
-
previous = index
|
35
|
-
|
36
28
|
next unless node.respond_to?(:method_name)
|
37
29
|
if previous_category && category != previous_category && node.loc.first_line - previous_node_end_line < 2
|
38
|
-
add_offense(node, message:
|
30
|
+
add_offense(node, message: MSG)
|
39
31
|
end
|
40
32
|
|
41
33
|
if previous_method_name && previous_method_name == node.method_name && node.loc.first_line - previous_node_end_line > 1
|
@@ -45,22 +37,20 @@ module RuboCop
|
|
45
37
|
previous_node_end_line = node.loc.last_line
|
46
38
|
previous_method_name = node.method_name
|
47
39
|
end
|
48
|
-
end
|
40
|
+
end
|
49
41
|
|
50
|
-
# Autocorrect by swapping between two nodes autocorrecting them
|
51
42
|
def autocorrect(node)
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
43
|
+
prev_category = prev_node(node)
|
44
|
+
# finds position of first newline
|
45
|
+
end_pos = end_position_for(prev_category)
|
46
|
+
newline_pos = buffer.source.index("\n", end_pos)
|
57
47
|
|
58
|
-
|
59
|
-
previous_range = source_range_with_comment(previous)
|
48
|
+
count = blank_lines_count_between(prev_category, node)
|
60
49
|
|
61
|
-
|
62
|
-
|
63
|
-
|
50
|
+
if count > 1
|
51
|
+
autocorrect_remove_lines(newline_pos, count)
|
52
|
+
else
|
53
|
+
autocorrect_insert_lines(newline_pos, count)
|
64
54
|
end
|
65
55
|
end
|
66
56
|
|
@@ -209,6 +199,16 @@ module RuboCop
|
|
209
199
|
processed_source.buffer
|
210
200
|
end
|
211
201
|
|
202
|
+
def prev_node(node)
|
203
|
+
return nil unless node.sibling_index.positive?
|
204
|
+
|
205
|
+
node.parent.children[node.sibling_index - 1]
|
206
|
+
end
|
207
|
+
|
208
|
+
def blank_lines_count_between(prev_category, node)
|
209
|
+
node.loc.first_line - prev_category.loc.last_line
|
210
|
+
end
|
211
|
+
|
212
212
|
# Load expected order from `ExpectedOrder` config.
|
213
213
|
# Define new terms in the expected order by adding new {categories}.
|
214
214
|
def expected_order
|
@@ -220,6 +220,20 @@ module RuboCop
|
|
220
220
|
def categories
|
221
221
|
cop_config['Categories']
|
222
222
|
end
|
223
|
+
|
224
|
+
def autocorrect_remove_lines(newline_pos, count)
|
225
|
+
range_to_remove = range_between(newline_pos, newline_pos + 1)
|
226
|
+
lambda do |corrector|
|
227
|
+
corrector.remove(range_to_remove)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
def autocorrect_insert_lines(newline_pos, count)
|
232
|
+
where_to_insert = range_between(newline_pos, newline_pos + 1)
|
233
|
+
lambda do |corrector|
|
234
|
+
corrector.insert_after(where_to_insert, "\n")
|
235
|
+
end
|
236
|
+
end
|
223
237
|
end
|
224
238
|
end
|
225
239
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-pixelforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Zhang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -113,7 +113,7 @@ files:
|
|
113
113
|
- bin/setup
|
114
114
|
- default.yml
|
115
115
|
- lib/rubocop-pixelforce.rb
|
116
|
-
- lib/rubocop/cop/pixelforce/
|
116
|
+
- lib/rubocop/cop/pixelforce/empty_line_between_categories.rb
|
117
117
|
- lib/rubocop/pixelforce.rb
|
118
118
|
- lib/rubocop/pixelforce/version.rb
|
119
119
|
- rubocop-pixelforce.gemspec
|