rubocop-socketry 0.5.0 → 0.6.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 45d8b27941b7424a315428ba04dd6dc98218896b54551f49f0cdde531c41b1af
|
|
4
|
+
data.tar.gz: d602b39fd19660eb34908a17c0681fd884d7d2fb9b14395e1f2070ee54910ced
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f3dbbc01b527507b658225ad95dcce305a1c33764636a88d3f83f7772a9c5264e7729d4d554335c4427c13f66b3a7535ef05e11842c0acddfa88d143a9cea83b
|
|
7
|
+
data.tar.gz: a09b66c884a2258df7e9f53010af7fe638ac6454b4c36195406136b694116f9f5cb16465e7d67bdbddfd872b525f10dfc104cd8bcc659c323209b5a4f759c2fe
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
|
@@ -14,26 +14,39 @@ module RuboCop
|
|
|
14
14
|
# - `foo {bar}` - space when method has no parentheses and is not chained
|
|
15
15
|
# - `foo(1, 2) {bar}` - space after closing paren for standalone methods
|
|
16
16
|
# - `array.each{|x| x*2}.reverse` - no space for method chains (even with parens)
|
|
17
|
+
# - `->(foo){foo}` - no space for lambdas (stabby lambda syntax)
|
|
18
|
+
# - `lambda{foo}` - no space for lambda keyword
|
|
19
|
+
# - `proc{foo}` - no space for proc keyword
|
|
20
|
+
# - `Proc.new{foo}` - no space for Proc.new
|
|
17
21
|
class BlockDelimiterSpacing < RuboCop::Cop::Base
|
|
18
22
|
extend Cop::AutoCorrector
|
|
19
23
|
|
|
20
24
|
MSG_ADD_SPACE = "Add a space before the opening brace."
|
|
21
25
|
MSG_REMOVE_SPACE = "Remove space before the opening brace for method chains."
|
|
26
|
+
MSG_REMOVE_SPACE_LAMBDA = "Remove space before the opening brace for lambdas/procs."
|
|
22
27
|
|
|
23
28
|
def on_block(node)
|
|
24
29
|
return unless node.braces?
|
|
25
30
|
|
|
26
31
|
send_node = node.send_node
|
|
27
32
|
|
|
28
|
-
# Priority: Check if it's
|
|
33
|
+
# Priority 1: Check if it's a lambda or proc
|
|
34
|
+
# Lambdas/procs should never have space before {
|
|
35
|
+
if lambda_or_proc?(send_node)
|
|
36
|
+
# ->(foo){foo} - no space (stabby lambda)
|
|
37
|
+
# lambda{foo} - no space (lambda keyword)
|
|
38
|
+
# proc{foo} - no space (proc keyword)
|
|
39
|
+
# Proc.new{foo} - no space (Proc.new)
|
|
40
|
+
check_no_space_for_lambda(node, send_node)
|
|
41
|
+
# Priority 2: Check if it's part of a method chain
|
|
29
42
|
# Method chains should never have space, even with parentheses
|
|
30
|
-
|
|
43
|
+
elsif part_of_method_chain?(node)
|
|
31
44
|
# array.each{|x| x*2}.reverse - no space
|
|
32
45
|
# obj.method(1, 2){|x| x}.other - also no space
|
|
33
46
|
check_no_space_before_brace(node, send_node)
|
|
34
47
|
elsif has_parentheses?(send_node)
|
|
35
48
|
# foo(1, 2) {bar} - space after ) for standalone methods
|
|
36
|
-
|
|
49
|
+
check_space_after_parentheses(node, send_node)
|
|
37
50
|
else
|
|
38
51
|
# foo {bar} - space for standalone methods without parens
|
|
39
52
|
check_space_before_brace(node, send_node)
|
|
@@ -42,6 +55,56 @@ module RuboCop
|
|
|
42
55
|
|
|
43
56
|
private
|
|
44
57
|
|
|
58
|
+
# Check if the send node is a lambda or proc (any form)
|
|
59
|
+
def lambda_or_proc?(send_node)
|
|
60
|
+
return true if send_node.lambda? # stabby lambda: ->{}
|
|
61
|
+
return true if send_node.method_name == :lambda # lambda keyword: lambda{}
|
|
62
|
+
return true if send_node.method_name == :proc # proc keyword: proc{}
|
|
63
|
+
|
|
64
|
+
# Check for Proc.new{}
|
|
65
|
+
if send_node.method_name == :new && send_node.receiver&.const_type?
|
|
66
|
+
# Check if the receiver is the Proc constant
|
|
67
|
+
receiver = send_node.receiver
|
|
68
|
+
return true if receiver.const_name == :Proc && receiver.children.first.nil?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
false
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Check that there's no space before the opening brace for lambdas
|
|
75
|
+
def check_no_space_for_lambda(block_node, send_node)
|
|
76
|
+
brace_begin = block_node.loc.begin
|
|
77
|
+
|
|
78
|
+
# Find the position just before the brace
|
|
79
|
+
char_before_pos = brace_begin.begin_pos - 1
|
|
80
|
+
|
|
81
|
+
return if char_before_pos < 0
|
|
82
|
+
|
|
83
|
+
char_before = processed_source.buffer.source[char_before_pos]
|
|
84
|
+
|
|
85
|
+
# If there's no space before the brace, we're good
|
|
86
|
+
return unless char_before == " "
|
|
87
|
+
|
|
88
|
+
# Find the extent of whitespace before the brace
|
|
89
|
+
start_pos = char_before_pos
|
|
90
|
+
while start_pos > 0 && processed_source.buffer.source[start_pos - 1] =~ /\s/
|
|
91
|
+
start_pos -= 1
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
space_range = Parser::Source::Range.new(
|
|
95
|
+
processed_source.buffer,
|
|
96
|
+
start_pos,
|
|
97
|
+
brace_begin.begin_pos
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
add_offense(
|
|
101
|
+
space_range,
|
|
102
|
+
message: MSG_REMOVE_SPACE_LAMBDA
|
|
103
|
+
) do |corrector|
|
|
104
|
+
corrector.remove(space_range)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
45
108
|
# Check if the block is part of a method chain (e.g., foo{}.bar or foo.bar{}.baz)
|
|
46
109
|
def part_of_method_chain?(block_node)
|
|
47
110
|
send_node = block_node.send_node
|
|
@@ -63,7 +126,7 @@ module RuboCop
|
|
|
63
126
|
end
|
|
64
127
|
|
|
65
128
|
# Check that there's a space between closing paren and opening brace
|
|
66
|
-
def
|
|
129
|
+
def check_space_after_parentheses(block_node, send_node)
|
|
67
130
|
paren_end = send_node.loc.end
|
|
68
131
|
brace_begin = block_node.loc.begin
|
|
69
132
|
|
|
@@ -36,8 +36,7 @@ module RuboCop
|
|
|
36
36
|
# puts error.backtrace.first
|
|
37
37
|
# end
|
|
38
38
|
class GlobalExceptionVariables < RuboCop::Cop::Base
|
|
39
|
-
MSG = "Avoid using global exception variable `%<variable>s`. "
|
|
40
|
-
"Use explicit exception handling with `rescue => error` instead."
|
|
39
|
+
MSG = "Avoid using global exception variable `%<variable>s`. Use explicit exception handling with `rescue => error` instead."
|
|
41
40
|
|
|
42
41
|
EXCEPTION_VARIABLES = %i[$! $@ $ERROR_INFO $ERROR_POSITION].freeze
|
|
43
42
|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
|
Binary file
|