Class: Herb::Engine::Validators::RenderValidator

Inherits:
Herb::Engine::Validator show all
Defined in:
lib/herb/engine/validators/render_validator.rb

Instance Attribute Summary

Attributes inherited from Herb::Engine::Validator

#diagnostics, #enabled

Instance Method Summary collapse

Methods inherited from Herb::Engine::Validator

#clear_diagnostics, #diagnostic_count, #enabled?, #error, #errors, #errors?, #hint, #info, #validate, #warning, #warnings, #warnings?

Methods inherited from Visitor

#visit, #visit_all, #visit_cdata_node, #visit_child_nodes, #visit_document_node, #visit_erb_begin_node, #visit_erb_block_node, #visit_erb_case_match_node, #visit_erb_case_node, #visit_erb_content_node, #visit_erb_else_node, #visit_erb_end_node, #visit_erb_ensure_node, #visit_erb_for_node, #visit_erb_if_node, #visit_erb_in_node, #visit_erb_node, #visit_erb_open_tag_node, #visit_erb_rescue_node, #visit_erb_strict_locals_node, #visit_erb_unless_node, #visit_erb_until_node, #visit_erb_when_node, #visit_erb_while_node, #visit_erb_yield_node, #visit_html_attribute_name_node, #visit_html_attribute_node, #visit_html_attribute_value_node, #visit_html_close_tag_node, #visit_html_comment_node, #visit_html_conditional_element_node, #visit_html_conditional_open_tag_node, #visit_html_doctype_node, #visit_html_element_node, #visit_html_omitted_close_tag_node, #visit_html_open_tag_node, #visit_html_text_node, #visit_html_virtual_close_tag_node, #visit_literal_node, #visit_node, #visit_ruby_html_attributes_splat_node, #visit_ruby_literal_node, #visit_ruby_parameter_node, #visit_ruby_render_keywords_node, #visit_ruby_render_local_node, #visit_whitespace_node, #visit_xml_declaration_node

Methods included from AST::Helpers

#erb_comment?, #erb_graphql?, #erb_output?, #erb_outputs?, #inline_ruby_comment?

Constructor Details

#initialize(enabled: true, filename: nil, project_path: nil) ⇒ RenderValidator

Returns a new instance of RenderValidator.



9
10
11
12
13
14
15
# File 'lib/herb/engine/validators/render_validator.rb', line 9

def initialize(enabled: true, filename: nil, project_path: nil)
  super(enabled: enabled)

  @filename = filename
  @project_path = project_path
  @view_root = find_view_root
end

Instance Method Details

#visit_erb_render_node(node) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/herb/engine/validators/render_validator.rb', line 17

def visit_erb_render_node(node)
  if node.dynamic?
    warning(
      "Dynamic render call cannot be statically resolved",
      node.location,
      code: "RenderDynamic",
      source: "RenderValidator"
    )
  elsif node.static_partial?
    validate_partial_exists(node)
  end

  super
end