|
1 | 1 | # frozen_string_literal: true |
2 | 2 |
|
3 | 3 | require "rubocop" |
| 4 | +require "rubocop/cop/github/render_literal_helpers" |
4 | 5 |
|
5 | 6 | module RuboCop |
6 | 7 | module Cop |
7 | 8 | module GitHub |
8 | 9 | class RailsControllerRenderLiteral < Cop |
9 | | - MSG = "render must be used with a string literal or an instance of a Class" |
10 | | - |
11 | | - def_node_matcher :literal?, <<-PATTERN |
12 | | - ({str sym true false nil?} ...) |
13 | | - PATTERN |
14 | | - |
15 | | - def_node_matcher :render?, <<-PATTERN |
16 | | - (send nil? {:render :render_to_string} ...) |
17 | | - PATTERN |
| 10 | + include RenderLiteralHelpers |
18 | 11 |
|
19 | | - def_node_matcher :render_literal?, <<-PATTERN |
20 | | - (send nil? {:render :render_to_string} ({str sym} $_) $...) |
21 | | - PATTERN |
22 | | - |
23 | | - def_node_matcher :render_const?, <<-PATTERN |
24 | | - (send nil? {:render :render_to_string} (const _ _) ...) |
25 | | - PATTERN |
26 | | - |
27 | | - def_node_matcher :render_inst?, <<-PATTERN |
28 | | - (send nil? {:render :render_to_string} (send _ :new ...) ...) |
29 | | - PATTERN |
30 | | - |
31 | | - def_node_matcher :render_with_options?, <<-PATTERN |
32 | | - (send nil? {:render :render_to_string} (hash $...)) |
33 | | - PATTERN |
| 12 | + MSG = "render must be used with a string literal or an instance of a Class" |
34 | 13 |
|
35 | 14 | def_node_matcher :ignore_key?, <<-PATTERN |
36 | 15 | (pair (sym { |
@@ -68,10 +47,14 @@ class RailsControllerRenderLiteral < Cop |
68 | 47 | }) ...) |
69 | 48 | PATTERN |
70 | 49 |
|
| 50 | + def_node_matcher :render_const?, <<-PATTERN |
| 51 | + (send nil? {:render :render_to_string} (const _ _) ...) |
| 52 | + PATTERN |
| 53 | + |
71 | 54 | def on_send(node) |
72 | 55 | return unless render?(node) |
73 | 56 |
|
74 | | - if render_literal?(node) || render_inst?(node) || render_const?(node) |
| 57 | + if render_literal?(node) || render_view_component?(node) || render_const?(node) |
75 | 58 | elsif option_pairs = render_with_options?(node) |
76 | 59 | option_pairs = option_pairs.reject { |pair| options_key?(pair) } |
77 | 60 |
|
|
0 commit comments