rubocop-jbuilder 0.1.0 → 0.1.2

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: 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