rubocop-ordered_methods 0.11 → 0.12

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: 8136e162c37c297ad3e2eee09364841551f447b6854ada050b165d0286fda95d
4
- data.tar.gz: 595fd69b9114f9122920cf5c8f15a1cb6a43b22f4c31ab9665a11bf2411ff91d
3
+ metadata.gz: a73cfd25f43f431101b9822358b1c59180d41a56f170bf614d7ec0149f4f2c3e
4
+ data.tar.gz: 3c470834560d76327fc38f4163284ab4131214d8b944f0ffe34ede2e4164caab
5
5
  SHA512:
6
- metadata.gz: ab8b3c4ae74ac44dc4ee43af04cdb3854f8df847113e499dc2d429843c4276a34084316edc3c0aca41fd4174fdd6c3a508a642ec8dbc19302e6c015bc65ee16e
7
- data.tar.gz: 96347af9d20819c73c485e5a985702097ab5507ec86774ab144bf8f9fa54363461dc0a53f993429a6321e0e8fea6d0b4bcf244c9159b17a03fcf7f503b41ec75
6
+ metadata.gz: a2600cc2de26566766baf34796941c5056340e3bd9ccc1e9eb30ee73b6d57aa315a2f290e641c2128e9089956415fc0f79d0a0b8dd300df02af5a73b238037e9
7
+ data.tar.gz: f7c14e935cbfae83760f4724292db502f9bed264e3c77c1d99c51d5d3ca4e6c948b46fedc8dbbbd32906d721dcaf310597160b2bc148b4bee06725f1c59119d3
data/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.12] - 2024-07-16
10
+
11
+ ### Fixed
12
+
13
+ - Add MethodQualifiers to the default config [#13](https://github.com/shanecav84/rubocop-ordered_methods/pull/13). Thanks, @Darhazer.
14
+ - Fix rubocop 1.65 compatability [#16](https://github.com/shanecav84/rubocop-ordered_methods/pull/16). Thanks, @Darhazer.
15
+
9
16
  ## [0.11] - 2023-12-19
10
17
 
11
18
  ### Fixed
data/config/default.yml CHANGED
@@ -4,4 +4,5 @@ Layout/OrderedMethods:
4
4
  EnforcedStyle: 'alphabetical'
5
5
  IgnoredMethods:
6
6
  - initialize
7
+ MethodQualifiers: []
7
8
  Signature: ~
@@ -17,14 +17,11 @@ module RuboCop
17
17
  @cop_config = cop_config
18
18
  end
19
19
 
20
- def correct(node, previous_node)
20
+ def correct(node, previous_node, corrector)
21
21
  AliasMethodOrderVerifier.verify!(node, previous_node)
22
22
  current_range = join_surroundings(node)
23
23
  previous_range = join_surroundings(previous_node)
24
- lambda do |corrector|
25
- corrector.replace(current_range, previous_range.source)
26
- corrector.replace(previous_range, current_range.source)
27
- end
24
+ corrector.swap(current_range, previous_range)
28
25
  end
29
26
 
30
27
  private
@@ -51,7 +48,7 @@ module RuboCop
51
48
  # @param source_range Parser::Source::Range
52
49
  # @return Parser::Source::Range
53
50
  def join_comments(node, source_range)
54
- @comment_locations[node.loc].each do |comment|
51
+ @comment_locations[node].each do |comment|
55
52
  source_range = source_range.join(comment.loc.expression)
56
53
  end
57
54
  source_range
@@ -29,9 +29,9 @@ module RuboCop
29
29
  #
30
30
  # def c; end
31
31
  # def d; end
32
- class OrderedMethods < Cop
33
- # TODO: Extending Cop is deprecated. Should extend Cop::Base.
34
- include IgnoredMethods
32
+ class OrderedMethods < Base
33
+ extend AutoCorrector
34
+ include AllowedMethods
35
35
  include RangeHelp
36
36
 
37
37
  COMPARISONS = {
@@ -48,22 +48,15 @@ module RuboCop
48
48
  node.first_argument.method_name
49
49
  end
50
50
 
51
- def autocorrect(node)
52
- _siblings, corrector = cache(node)
53
- corrector.correct(node, @previous_node)
54
- end
55
-
56
51
  def on_begin(node)
57
52
  start_node = node.children.find(&:class_type?)&.children&.last || node
58
- siblings, _corrector = cache(start_node)
59
-
60
- consecutive_methods(siblings) do |previous, current|
61
- unless ordered?(previous, current)
62
- @previous_node = previous
63
- add_offense(
64
- current,
65
- message: "Methods should be sorted in #{cop_config['EnforcedStyle']} order."
66
- )
53
+ consecutive_methods(start_node.children) do |previous, current|
54
+ next if ordered?(previous, current)
55
+
56
+ add_offense(current, message: message) do |corrector|
57
+ OrderedMethodsCorrector.new(
58
+ processed_source.ast_with_comments, start_node.children, cop_config
59
+ ).correct(current, previous, corrector)
67
60
  end
68
61
  end
69
62
  end
@@ -76,34 +69,6 @@ module RuboCop
76
69
  (node.send_type? && node.bare_access_modifier?)
77
70
  end
78
71
 
79
- # rubocop:disable Metrics/MethodLength
80
- # Cache to avoid traversing the AST multiple times
81
- def cache(node)
82
- @cache ||= Hash.new do |h, key|
83
- h[key.hash] = begin
84
- siblings = node.children
85
-
86
- # Init the corrector with the cache to avoid traversing the AST in
87
- # the corrector.
88
- #
89
- # We always init the @corrector, even if @options[:auto_correct] is
90
- # nil, because `add_offense` always attempts correction. This
91
- # correction attempt is how RuboCop knows if the offense can be
92
- # labeled "[Correctable]".
93
- comment_locations = ::Parser::Source::Comment.associate_locations(
94
- processed_source.ast,
95
- processed_source.comments
96
- )
97
- corrector = OrderedMethodsCorrector.new(comment_locations, siblings, cop_config)
98
-
99
- [siblings, corrector]
100
- end
101
- end
102
-
103
- @cache[node.hash]
104
- end
105
- # rubocop:enable Metrics/MethodLength
106
-
107
72
  # We disable `Style/ExplicitBlockArgument` for performance. See
108
73
  # https://github.com/shanecav84/rubocop-ordered_methods/pull/5#pullrequestreview-562957146
109
74
  # rubocop:disable Style/ExplicitBlockArgument
@@ -147,6 +112,10 @@ module RuboCop
147
112
  end
148
113
  end
149
114
 
115
+ def message
116
+ "Methods should be sorted in #{cop_config['EnforcedStyle']} order."
117
+ end
118
+
150
119
  def ordered?(left_method, right_method)
151
120
  comparison = COMPARISONS[cop_config['EnforcedStyle']]
152
121
  raise Error, ERR_INVALID_COMPARISON if comparison.nil?
@@ -162,7 +131,7 @@ module RuboCop
162
131
  end
163
132
 
164
133
  def relevant_node?(node)
165
- (node.defs_type? || node.def_type?) && !ignored_method?(node.method_name)
134
+ (node.defs_type? || node.def_type?) && !allowed_method?(node.method_name)
166
135
  end
167
136
  end
168
137
  end
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'rubocop-ordered_methods'
8
- spec.version = '0.11'
8
+ spec.version = '0.12'
9
9
  spec.authors = ['Shane Cavanaugh']
10
10
  spec.email = ['shane@shanecav.net']
11
11
 
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
- spec.add_runtime_dependency 'rubocop', '>= 1.0'
29
+ spec.add_dependency 'rubocop', '>= 1.0'
30
30
 
31
31
  spec.metadata['rubygems_mfa_required'] = 'true'
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-ordered_methods
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.11'
4
+ version: '0.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Cavanaugh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-19 00:00:00.000000000 Z
11
+ date: 2024-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -72,7 +72,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  requirements: []
75
- rubygems_version: 3.2.33
75
+ rubygems_version: 3.5.11
76
76
  signing_key:
77
77
  specification_version: 4
78
78
  summary: Checks that methods are ordered alphabetically.