immosquare-cleaner 0.1.71 → 0.1.72
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: 83217701b85a19b792303464dac395f9762fbc05bf5a249a7be5de644b6a4f78
|
4
|
+
data.tar.gz: e828cb27a783a4fd8ead1a3aa538419802799ce3a841dcf84b708e3bfc215ff8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71aa540fd2b292d764a6b66103f5990e527c8f2e96ed52c9adaf3e9df18d8ff4ac737e974582664a130b86c75e811d6a0dfb04e84c618fa6c45af8b1251c0e10
|
7
|
+
data.tar.gz: 3d2a6afa00b20a5295423969e9d1fc5dc7726e5624298c2e1b9d846c58e66d7ec97774c1f67cf5d875096cbb8af4b78f06db31f1d71844d9675b4f32ac1d3265
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
EnableDefaultLinters: true
|
3
|
+
linters:
|
4
|
+
NoJavascriptTagHelper:
|
5
|
+
enabled: false
|
6
|
+
SpaceInHtmlTag:
|
7
|
+
enabled: false
|
8
|
+
Rubocop:
|
9
|
+
enabled: true
|
10
|
+
rubocop_config:
|
11
|
+
inherit_from:
|
12
|
+
- linters/rubocop-3.2.6.yml
|
13
|
+
Layout/TrailingWhitespace:
|
14
|
+
Enabled: false
|
@@ -20,104 +20,148 @@ module RuboCop
|
|
20
20
|
|
21
21
|
extend AutoCorrector
|
22
22
|
|
23
|
-
MSG
|
24
|
-
ASSIGNMENT_TYPES = [:lvasgn, :casgn, :ivasgn, :cvasgn, :gvasgn].freeze
|
23
|
+
MSG = "Align the assignment operators of consecutive assignments.".freeze
|
25
24
|
|
26
25
|
def on_new_investigation
|
27
|
-
@assignment_groups
|
26
|
+
@assignment_groups = []
|
27
|
+
@current_group = []
|
28
|
+
@last_assignment_line = nil
|
28
29
|
end
|
29
30
|
|
30
|
-
|
31
|
-
|
32
|
-
check_alignment(node)
|
33
|
-
end
|
31
|
+
def on_lvasgn(node)
|
32
|
+
check_assignment(node)
|
34
33
|
end
|
35
34
|
|
36
|
-
|
35
|
+
def on_ivasgn(node)
|
36
|
+
check_assignment(node)
|
37
|
+
end
|
37
38
|
|
38
|
-
def
|
39
|
-
|
39
|
+
def on_cvasgn(node)
|
40
|
+
check_assignment(node)
|
41
|
+
end
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
+
def on_gvasgn(node)
|
44
|
+
check_assignment(node)
|
45
|
+
end
|
43
46
|
|
44
|
-
|
45
|
-
|
47
|
+
def on_casgn(node)
|
48
|
+
check_assignment(node)
|
49
|
+
end
|
46
50
|
|
47
|
-
|
51
|
+
def on_masgn(node)
|
52
|
+
check_assignment(node)
|
48
53
|
end
|
49
54
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
##============================================================##
|
56
|
+
## Pour les assignments d'index (listing["key"] = ...)
|
57
|
+
##============================================================##
|
58
|
+
def on_send(node)
|
59
|
+
return unless node.method_name == :[]= && node.arguments.length == 2
|
54
60
|
|
55
|
-
|
56
|
-
|
57
|
-
current_group << assignments_by_line[previous_line] if current_group.empty?
|
58
|
-
current_group << assignments_by_line[line]
|
59
|
-
else
|
60
|
-
groups << current_group if current_group.size > 1
|
61
|
-
current_group = [assignments_by_line[line]]
|
62
|
-
end
|
63
|
-
previous_line = line
|
64
|
-
end
|
61
|
+
check_assignment(node)
|
62
|
+
end
|
65
63
|
|
66
|
-
|
67
|
-
|
64
|
+
def on_investigation_end
|
65
|
+
finalize_current_group
|
66
|
+
process_groups
|
68
67
|
end
|
69
68
|
|
70
|
-
|
71
|
-
group = @assignment_groups.find {|g| g.include?(node) }
|
72
|
-
return unless group
|
69
|
+
private
|
73
70
|
|
74
|
-
|
75
|
-
|
71
|
+
##============================================================##
|
72
|
+
## Vérifier que c'est bien un assignment simple (=) et pas (>=, <=, =>, etc.)
|
73
|
+
##============================================================##
|
74
|
+
def check_assignment(node)
|
75
|
+
return unless assignment_operator?(node)
|
76
76
|
|
77
|
-
|
77
|
+
add_to_group(node)
|
78
|
+
end
|
78
79
|
|
79
|
-
|
80
|
-
|
80
|
+
##============================================================##
|
81
|
+
## Vérifier si l'opérateur est un simple "=" (pas >=, <=, =>, etc.)
|
82
|
+
##============================================================##
|
83
|
+
def assignment_operator?(node)
|
84
|
+
##============================================================##
|
85
|
+
## Pour les send nodes (index assignment)
|
86
|
+
##============================================================##
|
87
|
+
return true if node.respond_to?(:method_name) && node.method_name == :[]=
|
88
|
+
|
89
|
+
##============================================================##
|
90
|
+
## Pour les assignments classiques
|
91
|
+
##============================================================##
|
92
|
+
source = node.source.strip
|
93
|
+
return false unless source.include?("=")
|
81
94
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
end
|
95
|
+
equals_pos = source.index("=")
|
96
|
+
return false if equals_pos > 0 && [">", "<"].include?(source[equals_pos - 1])
|
97
|
+
return false if equals_pos < source.length - 1 && source[equals_pos + 1] == ">"
|
86
98
|
|
87
|
-
|
88
|
-
base_column = group.first.source_range.column
|
89
|
-
max_var_length = group.map {|node| variable_name_length(node) }.max
|
90
|
-
base_column + max_var_length + 1
|
99
|
+
true
|
91
100
|
end
|
92
101
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
102
|
+
##============================================================##
|
103
|
+
## Ajouter un assignment au groupe courant ou créer un nouveau groupe
|
104
|
+
##============================================================##
|
105
|
+
def add_to_group(node)
|
106
|
+
current_line = node.location.line
|
107
|
+
if @current_group.empty?
|
108
|
+
@current_group = [node]
|
109
|
+
elsif consecutive_lines?(@last_assignment_line, current_line)
|
110
|
+
@current_group << node
|
111
|
+
else
|
112
|
+
finalize_current_group
|
113
|
+
@current_group = [node]
|
103
114
|
end
|
115
|
+
@last_assignment_line = current_line
|
104
116
|
end
|
105
117
|
|
106
|
-
|
107
|
-
|
118
|
+
##============================================================##
|
119
|
+
## Retourne true si les deux lignes sont consécutives (pas de ligne vide entre elles)
|
120
|
+
##============================================================##
|
121
|
+
def consecutive_lines?(line1, line2)
|
122
|
+
gap = line2 - line1 - 1
|
123
|
+
gap == 0
|
108
124
|
end
|
109
125
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
126
|
+
##============================================================##
|
127
|
+
## Finaliser le groupe courant s'il contient plus d'un assignment
|
128
|
+
##============================================================##
|
129
|
+
def finalize_current_group
|
130
|
+
@assignment_groups << @current_group.dup if @current_group.length > 1
|
131
|
+
@current_group = []
|
132
|
+
@last_assignment_line = nil
|
133
|
+
end
|
114
134
|
|
115
|
-
|
116
|
-
|
135
|
+
##============================================================##
|
136
|
+
## Traiter tous les groupes d'assignments pour vérifier l'alignement
|
137
|
+
##============================================================##
|
138
|
+
def process_groups
|
139
|
+
@assignment_groups.each do |group|
|
140
|
+
check_and_correct_alignment(group)
|
141
|
+
end
|
117
142
|
end
|
118
143
|
|
119
|
-
|
120
|
-
|
144
|
+
##============================================================##
|
145
|
+
## Vérifier l'alignement d'un groupe et corriger si nécessaire
|
146
|
+
##============================================================##
|
147
|
+
def check_and_correct_alignment(group)
|
148
|
+
lefts = group.map {|node| node.source.split("=")[0].to_s.strip.gsub(/\s+/, "").gsub(",", ", ") }
|
149
|
+
required_size = lefts.map(&:length).max + 1
|
150
|
+
|
151
|
+
group.each.with_index do |node, index|
|
152
|
+
current_source = node.source
|
153
|
+
new_left = lefts[index]
|
154
|
+
new_left += " " * (required_size - new_left.length)
|
155
|
+
split = current_source.split("=")
|
156
|
+
split[0] = new_left
|
157
|
+
expected_source = split.join("=")
|
158
|
+
|
159
|
+
if current_source != expected_source
|
160
|
+
add_offense(node, :message => MSG) do |corrector|
|
161
|
+
corrector.replace(node, expected_source)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
121
165
|
end
|
122
166
|
|
123
167
|
end
|
data/linters/rubocop-3.4.1.yml
CHANGED
@@ -98,5 +98,9 @@ CustomCops/Style/CommentNormalization:
|
|
98
98
|
Enabled: true
|
99
99
|
CustomCops/Style/FontAwesomeNormalization:
|
100
100
|
Enabled: true
|
101
|
+
CustomCops/Style/AlignAssignments:
|
102
|
+
Enabled: true
|
103
|
+
Layout/SpaceAroundOperators:
|
104
|
+
Enabled: false
|
101
105
|
Gemspec/RequireMFA:
|
102
106
|
Enabled: false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: immosquare-cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.72
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- immosquare
|
@@ -146,6 +146,7 @@ files:
|
|
146
146
|
- lib/immosquare-cleaner/railtie.rb
|
147
147
|
- lib/immosquare-cleaner/version.rb
|
148
148
|
- lib/tasks/immosquare_cleaner.rake
|
149
|
+
- linters/erb-lint-3.2.6.yml
|
149
150
|
- linters/erb-lint-3.4.1.yml
|
150
151
|
- linters/erb-lint.yml
|
151
152
|
- linters/eslint.config.mjs
|