rubocop-pixelforce 0.3 → 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: f7183c2bd36b9ded637e732f10a442180c1d631946009f0e7b18947cc26c2b91
4
- data.tar.gz: 767a3f22c46a45d9192211fe56f5ba0848ee10bc0a2ab1eb36e089b50ac60692
3
+ metadata.gz: 1588caf9ae02d875f314601fe24c5ccabf39a426d4a2a3c24d36fd77102e7038
4
+ data.tar.gz: 84cf2619ac8bc213caa36b050352e8422d1caeff764ac167cf260d7d6545c17a
5
5
  SHA512:
6
- metadata.gz: a28e3971ac5717957d9ccf62aac47932c4b87b532c6367dbad4b4d985c183944d6559542f0553d47b5667471f2f8341f88466907c5f36afee3df91f0dfd5c1fc
7
- data.tar.gz: eedf613e54c8903a8453fb11e657d93dc5500983864cf2a0407fd98db5169a52970d763fbdd86b707a8a1952adc4a9a34d561fa8d95b80daedbb70a4f70c5544
6
+ metadata.gz: cdbdfc01ce3d8fa70e1c7286083b0d8dc924d71fdd7a49f1f9e6b65064b29c602809708feaa6a71b513ea78bdf7b242bdc8d48ea56cce5ae3f94036fcf97482f
7
+ data.tar.gz: 0a008613890e9fb8d18cfc52d19300b2ff1d02c742b2e5e08cef57a35e0e2d9ae9f87138630c182d04579a09f1ca5583cd2a89d6c0bff16fd19c94a6437a6320
data/.travis.yml CHANGED
@@ -3,5 +3,5 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.4.7
6
+ - 2.7.3
7
7
  before_install: gem install bundler -v 2.0.2
data/Gemfile.lock CHANGED
@@ -1,23 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop-pixelforce (0.3)
5
- rubocop (~> 0.76)
4
+ rubocop-pixelforce (1.0)
5
+ rubocop (~> 1.21)
6
6
  rubocop-performance
7
7
  rubocop-rails
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- ast (2.4.0)
12
+ activesupport (6.1.4.1)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 1.6, < 2)
15
+ minitest (>= 5.1)
16
+ tzinfo (~> 2.0)
17
+ zeitwerk (~> 2.3)
18
+ ast (2.4.2)
19
+ concurrent-ruby (1.1.9)
13
20
  diff-lcs (1.3)
14
- jaro_winkler (1.5.4)
15
- parallel (1.18.0)
16
- parser (2.6.5.0)
17
- ast (~> 2.4.0)
18
- rack (2.0.7)
21
+ i18n (1.8.10)
22
+ concurrent-ruby (~> 1.0)
23
+ minitest (5.14.4)
24
+ parallel (1.21.0)
25
+ parser (3.0.2.0)
26
+ ast (~> 2.4.1)
27
+ rack (2.2.3)
19
28
  rainbow (3.0.0)
20
- rake (10.4.2)
29
+ rake (13.0.1)
30
+ regexp_parser (2.1.1)
31
+ rexml (3.2.5)
21
32
  rspec (3.9.0)
22
33
  rspec-core (~> 3.9.0)
23
34
  rspec-expectations (~> 3.9.0)
@@ -31,29 +42,38 @@ GEM
31
42
  diff-lcs (>= 1.2.0, < 2.0)
32
43
  rspec-support (~> 3.9.0)
33
44
  rspec-support (3.9.0)
34
- rubocop (0.76.0)
35
- jaro_winkler (~> 1.5.1)
45
+ rubocop (1.21.0)
36
46
  parallel (~> 1.10)
37
- parser (>= 2.6)
47
+ parser (>= 3.0.0.0)
38
48
  rainbow (>= 2.2.2, < 4.0)
49
+ regexp_parser (>= 1.8, < 3.0)
50
+ rexml
51
+ rubocop-ast (>= 1.9.1, < 2.0)
39
52
  ruby-progressbar (~> 1.7)
40
- unicode-display_width (>= 1.4.0, < 1.7)
41
- rubocop-performance (1.5.0)
42
- rubocop (>= 0.71.0)
43
- rubocop-rails (2.3.2)
53
+ unicode-display_width (>= 1.4.0, < 3.0)
54
+ rubocop-ast (1.11.0)
55
+ parser (>= 3.0.1.1)
56
+ rubocop-performance (1.11.5)
57
+ rubocop (>= 1.7.0, < 2.0)
58
+ rubocop-ast (>= 0.4.0)
59
+ rubocop-rails (2.12.2)
60
+ activesupport (>= 4.2.0)
44
61
  rack (>= 1.1)
45
- rubocop (>= 0.72.0)
46
- ruby-progressbar (1.10.1)
47
- unicode-display_width (1.6.0)
62
+ rubocop (>= 1.7.0, < 2.0)
63
+ ruby-progressbar (1.11.0)
64
+ tzinfo (2.0.4)
65
+ concurrent-ruby (~> 1.0)
66
+ unicode-display_width (2.0.0)
67
+ zeitwerk (2.4.2)
48
68
 
49
69
  PLATFORMS
50
70
  ruby
51
71
 
52
72
  DEPENDENCIES
53
73
  bundler (~> 2.0)
54
- rake (~> 10.0)
74
+ rake (~> 13.0)
55
75
  rspec (~> 3.0)
56
76
  rubocop-pixelforce!
57
77
 
58
78
  BUNDLED WITH
59
- 2.0.2
79
+ 2.2.3
data/default.yml CHANGED
@@ -8,6 +8,7 @@ AllCops:
8
8
  - 'Gemfile'
9
9
  - 'db/**/*'
10
10
  - 'bin/*'
11
+ - 'config/**/*'
11
12
 
12
13
  Rails/UnknownEnv:
13
14
  Environments:
@@ -22,7 +23,7 @@ Rails/HasManyOrHasOneDependent:
22
23
  Rails/FilePath:
23
24
  Enabled: false
24
25
 
25
- Pixelforce/ClassStructure:
26
+ Layout/ClassStructure: &class_structures
26
27
  Enabled: true
27
28
  ExpectedOrder:
28
29
  - module_inclusion
@@ -76,6 +77,10 @@ Pixelforce/ClassStructure:
76
77
  - prepend
77
78
  - extend
78
79
 
80
+ Pixelforce/EmptyLineBwteenCategories:
81
+ <<: *class_structures
82
+ Enabled: true
83
+
79
84
  Layout/AlignHash:
80
85
  EnforcedColonStyle: table
81
86
 
@@ -1,7 +1,9 @@
1
1
  module RuboCop
2
2
  module Cop
3
3
  module Pixelforce
4
- class ClassStructure < Cop
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 = '`%<category>s` is supposed to appear before ' \
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: "Use empty lines between categories.")
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
- node_classification = classify(node)
53
- previous = left_siblings_of(node).find do |sibling|
54
- classification = classify(sibling)
55
- !ignore?(classification) && node_classification != classification
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
- current_range = source_range_with_comment(node)
59
- previous_range = source_range_with_comment(previous)
48
+ count = blank_lines_count_between(prev_category, node)
60
49
 
61
- lambda do |corrector|
62
- corrector.insert_before(previous_range, current_range.source)
63
- corrector.remove(current_range)
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
@@ -1,5 +1,5 @@
1
1
  module Rubocop
2
2
  module Pixelforce
3
- VERSION = "0.3"
3
+ VERSION = "1.0"
4
4
  end
5
5
  end
@@ -1,6 +1,3 @@
1
+ require 'rubocop'
1
2
  require "rubocop/pixelforce/version"
2
-
3
- module Rubocop
4
- module Pixelforce
5
- end
6
- end
3
+ require 'rubocop/cop/pixelforce/empty_line_between_categories'
@@ -1,3 +1,3 @@
1
1
  require 'rubocop'
2
2
 
3
- require 'rubocop/cop/pixelforce/class_structure'
3
+ require 'rubocop/cop/pixelforce/empty_line_between_categories'
@@ -26,10 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.add_development_dependency "bundler", "~> 2.0"
29
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "rake", "~> 13.0"
30
30
  spec.add_development_dependency "rspec", "~> 3.0"
31
31
 
32
- spec.add_runtime_dependency "rubocop", "~> 0.76"
32
+ spec.add_runtime_dependency "rubocop", "~> 1.21"
33
33
  spec.add_runtime_dependency "rubocop-performance"
34
34
  spec.add_runtime_dependency "rubocop-rails"
35
35
  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.3'
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Zhang
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-08 00:00:00.000000000 Z
11
+ date: 2021-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.76'
61
+ version: '1.21'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.76'
68
+ version: '1.21'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop-performance
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +113,7 @@ files:
113
113
  - bin/setup
114
114
  - default.yml
115
115
  - lib/rubocop-pixelforce.rb
116
- - lib/rubocop/cop/pixelforce/class_structure.rb
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
@@ -123,7 +123,7 @@ metadata:
123
123
  homepage_uri: https://github.com/BenZhang/rubocop-pixelforce
124
124
  source_code_uri: https://github.com/BenZhang/rubocop-pixelforce
125
125
  changelog_uri: https://github.com/BenZhang/rubocop-pixelforce
126
- post_install_message:
126
+ post_install_message:
127
127
  rdoc_options: []
128
128
  require_paths:
129
129
  - lib
@@ -138,9 +138,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 2.7.9
143
- signing_key:
141
+ rubygems_version: 3.2.3
142
+ signing_key:
144
143
  specification_version: 4
145
144
  summary: Custom Rubocop cop for PixelForce.
146
145
  test_files: []