rubocop-ast 1.36.2 → 1.37.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/lib/rubocop/ast/node/array_node.rb +1 -1
- data/lib/rubocop/ast/node/for_node.rb +1 -1
- data/lib/rubocop/ast/node/hash_node.rb +1 -1
- data/lib/rubocop/ast/node/if_node.rb +7 -0
- data/lib/rubocop/ast/node/in_pattern_node.rb +1 -1
- data/lib/rubocop/ast/node/mixin/method_dispatch_node.rb +3 -3
- data/lib/rubocop/ast/node/mixin/parameterized_node.rb +1 -1
- data/lib/rubocop/ast/node/str_node.rb +37 -1
- data/lib/rubocop/ast/node/until_node.rb +1 -1
- data/lib/rubocop/ast/node/when_node.rb +1 -1
- data/lib/rubocop/ast/node/while_node.rb +1 -1
- data/lib/rubocop/ast/node.rb +12 -1
- data/lib/rubocop/ast/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71290c5f117f13043b681f7ce182d115284b84675bbfc0bf35448152ebfb42bd
|
4
|
+
data.tar.gz: 3c13a0e8e089409da5dd353bfea60c3981f56dac094f7a650690f3862bdf3e36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08c425d33229f9116b91905ef14ea762ad2d17603ae581795d3101526a51ee6a4c8e1ab2e508f2355b688e4143f668e71767f8283934ee3b27f045315add0a28'
|
7
|
+
data.tar.gz: 58173b8980810073f670c9087905923661d8a3fe0a43c17b354388ee07728611a6c5d1a690a2813184a6d4286c29c090d11d4f28de001ae395bfb774c53720bc
|
@@ -25,6 +25,13 @@ module RuboCop
|
|
25
25
|
keyword == 'unless'
|
26
26
|
end
|
27
27
|
|
28
|
+
# Checks whether the `if` node has an `then` clause.
|
29
|
+
#
|
30
|
+
# @return [Boolean] whether the node has an `then` clause
|
31
|
+
def then?
|
32
|
+
loc_is?(:begin, 'then')
|
33
|
+
end
|
34
|
+
|
28
35
|
# Checks whether the `if` is an `elsif`. Parser handles these by nesting
|
29
36
|
# `if` nodes in the `else` branch.
|
30
37
|
#
|
@@ -117,7 +117,7 @@ module RuboCop
|
|
117
117
|
#
|
118
118
|
# @return [Boolean] whether the method was called with a connecting dot
|
119
119
|
def dot?
|
120
|
-
|
120
|
+
loc_is?(:dot, '.')
|
121
121
|
end
|
122
122
|
|
123
123
|
# Checks whether the dispatched method uses a double colon to connect the
|
@@ -125,7 +125,7 @@ module RuboCop
|
|
125
125
|
#
|
126
126
|
# @return [Boolean] whether the method was called with a connecting dot
|
127
127
|
def double_colon?
|
128
|
-
|
128
|
+
loc_is?(:dot, '::')
|
129
129
|
end
|
130
130
|
|
131
131
|
# Checks whether the dispatched method uses a safe navigation operator to
|
@@ -133,7 +133,7 @@ module RuboCop
|
|
133
133
|
#
|
134
134
|
# @return [Boolean] whether the method was called with a connecting dot
|
135
135
|
def safe_navigation?
|
136
|
-
|
136
|
+
loc_is?(:dot, '&.')
|
137
137
|
end
|
138
138
|
|
139
139
|
# Checks whether the *explicit* receiver of this method dispatch is
|
@@ -8,13 +8,49 @@ module RuboCop
|
|
8
8
|
class StrNode < Node
|
9
9
|
include BasicLiteralNode
|
10
10
|
|
11
|
+
PERCENT_LITERAL_TYPES = {
|
12
|
+
:% => /\A%(?=[^a-zA-Z])/,
|
13
|
+
:q => /\A%q/,
|
14
|
+
:Q => /\A%Q/
|
15
|
+
}.freeze
|
16
|
+
|
17
|
+
def single_quoted?
|
18
|
+
loc_is?(:begin, "'")
|
19
|
+
end
|
20
|
+
|
21
|
+
def double_quoted?
|
22
|
+
loc_is?(:begin, '"')
|
23
|
+
end
|
24
|
+
|
11
25
|
def character_literal?
|
12
|
-
|
26
|
+
loc_is?(:begin, '?')
|
13
27
|
end
|
14
28
|
|
15
29
|
def heredoc?
|
16
30
|
loc.is_a?(Parser::Source::Map::Heredoc)
|
17
31
|
end
|
32
|
+
|
33
|
+
# Checks whether the string literal is delimited by percent brackets.
|
34
|
+
#
|
35
|
+
# @overload percent_literal?
|
36
|
+
# Check for any string percent literal.
|
37
|
+
#
|
38
|
+
# @overload percent_literal?(type)
|
39
|
+
# Check for a string percent literal of type `type`.
|
40
|
+
#
|
41
|
+
# @param type [Symbol] an optional percent literal type
|
42
|
+
#
|
43
|
+
# @return [Boolean] whether the string is enclosed in percent brackets
|
44
|
+
def percent_literal?(type = nil)
|
45
|
+
opening_delimiter = loc.begin if loc.respond_to?(:begin)
|
46
|
+
return false unless opening_delimiter
|
47
|
+
|
48
|
+
if type
|
49
|
+
opening_delimiter.source.match?(PERCENT_LITERAL_TYPES.fetch(type))
|
50
|
+
else
|
51
|
+
opening_delimiter.source.start_with?('%')
|
52
|
+
end
|
53
|
+
end
|
18
54
|
end
|
19
55
|
end
|
20
56
|
end
|
data/lib/rubocop/ast/node.rb
CHANGED
@@ -497,7 +497,7 @@ module RuboCop
|
|
497
497
|
end
|
498
498
|
|
499
499
|
def parenthesized_call?
|
500
|
-
|
500
|
+
loc_is?(:begin, '(')
|
501
501
|
end
|
502
502
|
|
503
503
|
def call_type?
|
@@ -534,6 +534,17 @@ module RuboCop
|
|
534
534
|
node.match_guard_clause?
|
535
535
|
end
|
536
536
|
|
537
|
+
# Shortcut to safely test a particular location, even if
|
538
|
+
# this location does not exist or is `nil`
|
539
|
+
def loc_is?(which_loc, str)
|
540
|
+
return false unless loc.respond_to?(which_loc)
|
541
|
+
|
542
|
+
location = loc.public_send(which_loc)
|
543
|
+
return false unless location
|
544
|
+
|
545
|
+
location.is?(str)
|
546
|
+
end
|
547
|
+
|
537
548
|
# @!method match_guard_clause?(node = self)
|
538
549
|
def_node_matcher :match_guard_clause?, <<~PATTERN
|
539
550
|
[${(send nil? {:raise :fail} ...) return break next} single_line?]
|
data/lib/rubocop/ast/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-ast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.37.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-12-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parser
|