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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 16bc89330d3996087dffc1f7e3ec8e3b50d8965ba6190d643e9177befe1ccf6f
4
- data.tar.gz: 901f067575c85f4a2d5b3556ca8e99a834ac7323997e991cd1e5c4c00245d55e
3
+ metadata.gz: 5dc1398a26eafed01afb1086e384b88c2517c59aea472adf10bf00fa7a926b32
4
+ data.tar.gz: d34ff5b7a043877d940f5ab0a6ff23b6f6912d3107ab7dc26f0b9b3950a1b4d5
5
5
  SHA512:
6
- metadata.gz: 619e39e98a72ccd21a93dd177b9b28b6353eae540a03f9417ffff3f1d44426ee38aa9d790b5bcec172ea4248ffc35f9b03ab2afe79bf8afa76b111ee148f91b3
7
- data.tar.gz: bd417a44a6b93879987cf76a238318faa6fd7c89c282ceeb68185d82389e18217dfe1378138ae03ad25eb8570adb73baf3499d91231d48f2f84c0726ee8ac0fa
6
+ metadata.gz: ba321811d6aea779cb44df0d90043a710b0c2d59def640d93b04a41bf4556694e82492223b9cb5c2945f9ea0a11736607785a7f048b81045cdc8e72f3f3e1cc7
7
+ data.tar.gz: 2714bc7fda30fd45e994616096752dd2549e92dd114fd022a7d6f4c53f298973e4dee549071ce1a227210082bdfa054eea37b17a0f81f458418d28b3543a29f7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop-pixelforce (2.0.0)
4
+ rubocop-pixelforce (2.1.0)
5
5
  rubocop (~> 1.21)
6
6
  rubocop-performance
7
7
  rubocop-rails
data/default.yml CHANGED
@@ -80,7 +80,7 @@ Layout/ClassStructure: &class_structures
80
80
  - prepend
81
81
  - extend
82
82
 
83
- Pixelforce/EmptyLineBwteenCategories:
83
+ Pixelforce/EmptyLineBetweenCategories:
84
84
  <<: *class_structures
85
85
  Enabled: true
86
86
 
@@ -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
- MSG = 'Use empty lines between categories.'
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
- if previous_category && category != previous_category && node.loc.first_line - previous_node_end_line < 2
31
- add_offense(node, message: MSG)
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
@@ -1,5 +1,5 @@
1
1
  module Rubocop
2
2
  module Pixelforce
3
- VERSION = '2.0.0'
3
+ VERSION = '2.1.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-pixelforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Zhang