ccru 0.1.6 → 0.1.7

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: 612a8b433133e314689150b5b9970c8394931e21dd077953bcdd42cf79a706af
4
- data.tar.gz: 81d099e9c75c25468bbf10fd326d12d0d331cc9bf12d0c6b50a269e1b606b0f7
3
+ metadata.gz: 20d17debc362218e7bd68e57cff217704df4ac263885c7f467fa4a682b318517
4
+ data.tar.gz: f356b6682d584a9af3a55274674fe5c65d6ddeab7d39faee12fb6f5073cf1f13
5
5
  SHA512:
6
- metadata.gz: affae15adfeae4c7ba70bdd9500b384c41517c808d4637286ef145c05b5c347de21f650f45efd17a81eb9da1f1a3e0b614f85f425a7072c1c4d84a22ee876989
7
- data.tar.gz: 0ce2fc9f7fe39b429dd945352214e75da045996b35a6da29b5abf0562451e1a4a14f8c938ff077ac679de19c40d6ece0dc3c020a55ee547cb795fb7c24b3a2b2
6
+ metadata.gz: eb00a13f5188ad77e6565f9ce3cb28ce431595043a244f4e42d00a67caf581988332696c29f08315a6abd96e60e7c19517e7d498f2bf6f2d77ca6b4e8bc75f90
7
+ data.tar.gz: ea3a1c071a6c0563c1ba469a75cc294143843ea2692df4833d7715af42231c10011deb3be8e4fda63e56da4cba7f45f9d756b7efd8d3e82c6188e8c263412611
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ccru (0.1.6)
4
+ ccru (0.1.7)
5
5
  rubocop (>= 0.5, < 2.0)
6
6
 
7
7
  GEM
@@ -214,7 +214,8 @@ module Ccru
214
214
  next if line_content.match(rule[:pattern]).nil?
215
215
  next if rule_name == :missing_semicolon && no_need_semicolon?(line_content)
216
216
  next if rule_name == :unused_variables && used_variable?(line_content, line_number)
217
- next if rule_name == :loose_equality && line_content.include?("!==")
217
+ next if rule_name == :loose_equality && (line_content.include?("===") || line_content.include?("!=="))
218
+ next if rule_name == :loose_inequality && line_content.include?("!==")
218
219
 
219
220
  add_offense(rule_name, rule, line_content, line_number)
220
221
  break
@@ -274,8 +275,48 @@ module Ccru
274
275
  # but JS ASI will handle it, I consider it unnecessary
275
276
  return true if line.match(/^(return|break|continue|throw)\b/)
276
277
 
278
+ # Object/array literal properties and elements don't need semicolons
279
+ return true if in_object_or_array_literal?(line_content)
280
+
277
281
  false
278
282
  end
283
+
284
+ def in_object_or_array_literal?(line_content)
285
+ return false unless @current_code
286
+
287
+ line_number = @current_code.index(line_content) + 1
288
+ return false unless line_number
289
+
290
+ # Check if we're inside an object or array literal
291
+ brace_count = 0
292
+ bracket_count = 0
293
+ in_object = false
294
+ in_array = false
295
+
296
+ @current_code.each_with_index do |code_line, index|
297
+ break if index >= line_number
298
+
299
+ # Check for braces and brackets
300
+ code_line.each_char do |char|
301
+ case char
302
+ when "{"
303
+ brace_count += 1
304
+ in_object = true if brace_count == 1
305
+ when "}"
306
+ brace_count -= 1
307
+ in_object = false if brace_count.zero?
308
+ when "["
309
+ bracket_count += 1
310
+ in_array = true if bracket_count == 1
311
+ when "]"
312
+ bracket_count -= 1
313
+ in_array = false if bracket_count.zero?
314
+ end
315
+ end
316
+ end
317
+
318
+ in_object || in_array
319
+ end
279
320
  # rubocop:enable Metrics
280
321
 
281
322
  def commment?(line_content, line_number)
data/lib/ccru/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ccru
4
- VERSION = "0.1.6"
4
+ VERSION = "0.1.7"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ccru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - thucpt