rubocop-jbuilder 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e394cfd7f0a468e9bf48eab1a8eeb73d6319e908e121a2b8c5d84cc0352a8527
4
- data.tar.gz: 8da70eccb3c7d8939ea30835c11e6f2d7b6f2b87fbceb5f6bca5efe0abab620d
3
+ metadata.gz: 7643a97e9b823f3197b2c8b1330dc168860c864d8c24fd07e7c3cca98d9d63fe
4
+ data.tar.gz: e92acc7906a5b0e4d1a5eecdb939bab8e1318540da1025b3c5fa80b056f67d6b
5
5
  SHA512:
6
- metadata.gz: 52600605169a3e9ffe5eddf2dcf06bae8251c30683625d44674973236499e3b6fe86b8544d1175c0974ada3b57a082382415d73f7e14ccbf4c1eba290a6a507a
7
- data.tar.gz: 4c4dd81131919b6591d6a77a1105d69fa3d6834e3ca7dc934c1466f7f4cf01a76a5e8a77a9d1ded7c775f27e8f9e44b9a76f0a4b3e8b795da820d82e0ee06131
6
+ metadata.gz: 7ea81e6dc735622da7c99d21b5c0c4d8cc9b92f930aba1faa3d00947d06250269cbe32d7d20ec072146985111a46316e7c240d2477617270b551ea38a555824c
7
+ data.tar.gz: 2862246d08ca05e6e155bb7facc515cba9d59e41a21586004c2318197af217541c318470bf19e5c267d7f83d0b7d71322651b94298a2036794fa3b86af7ccc9a
data/CHANGELOG.md CHANGED
@@ -1,4 +1,6 @@
1
1
  ## [Unreleased]
2
+ - Fix PartialExists to search for multiple local paths
3
+ - Fix PartialExists to search partials without `.json`
2
4
 
3
5
  ## [0.1.0] - 2024-01-08
4
6
 
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- TEST_FILENAME = File.join(Dir.pwd, "app/views/testing/show.json.jbuilder")
3
+ require "pathname"
4
+
5
+ TEST_FILENAME = File.join(Dir.pwd, "app/views/testing/nested/show.json.jbuilder")
4
6
 
5
7
  module RuboCop
6
8
  module Cop
7
9
  module Jbuilder
8
10
  class PartialExists < Base
9
- MSG = "Partial not found. Looked for: %<path>s"
11
+ MSG = "Partial not found. Looked for: %<paths>s"
10
12
 
11
13
  def_node_matcher :has_partial?, <<~PATTERN
12
14
  {
@@ -17,21 +19,39 @@ module RuboCop
17
19
 
18
20
  def on_send(node)
19
21
  has_partial?(node) do |actual|
20
- full_path = get_view_path_from(actual)
21
- path = full_path.sub(rails_root_dirname(node) + "/", "")
22
- add_offense(actual, message: format(MSG, path:)) unless File.exist?(full_path)
22
+ all_globs = get_view_globs_from(actual)
23
+
24
+ return if all_globs.any? { |glob| Dir.glob(glob).any? }
25
+
26
+ base_path = rails_root_dirname(node)
27
+ relative_paths = all_globs.map { |glob| relative_path(glob, base_path) }
28
+ add_offense(actual, message: format(MSG, paths: relative_paths.join(", ")))
23
29
  end
24
30
  end
25
31
 
26
32
  private
27
33
 
28
- def get_view_path_from(node)
34
+ def get_view_globs_from(node)
29
35
  partial = node.source[1..-2]
30
36
  segments = partial.split("/")
31
- segments.last.sub!(/.*/, '_\&.json.jbuilder')
37
+ segments.last.sub!(/.*/, '_\&*.jbuilder')
38
+
39
+ specific_path = segments.count != 1
40
+ return [File.join(rails_views_dirname(node), *segments)] if specific_path
41
+
42
+ globs = []
43
+ current_dirname = sut_dirname(node)
44
+ while current_dirname != rails_views_dirname(node)
45
+ globs << File.join(current_dirname, *segments)
46
+ current_dirname = File.expand_path("..", current_dirname)
47
+ end
48
+ globs
49
+ end
32
50
 
33
- dirname = (segments.count == 1) ? sut_dirname(node) : rails_views_dirname(node)
34
- File.join(dirname, *segments)
51
+ def relative_path(glob, base_path)
52
+ full = Pathname.new(glob.sub("*", ""))
53
+ base = Pathname.new(base_path)
54
+ full.relative_path_from(base).to_s
35
55
  end
36
56
 
37
57
  def sut_dirname(node)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module Jbuilder
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.2"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Molina A
@@ -41,7 +41,7 @@ files:
41
41
  - LICENSE.txt
42
42
  - README.md
43
43
  - Rakefile
44
- - app/views/testing/_exists.json.jbuilder
44
+ - app/views/testing/_exists.jbuilder
45
45
  - config/default.yml
46
46
  - lib/rubocop-jbuilder.rb
47
47
  - lib/rubocop/cop/jbuilder/partial_exists.rb