Class: Herb::ActionView::RenderCallVisitor

Inherits:
Visitor
  • Object
show all
Defined in:
lib/herb/action_view/render_analyzer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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 Herb::AST::Helpers

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

Constructor Details

#initialize(file) ⇒ RenderCallVisitor

Returns a new instance of RenderCallVisitor.



1027
1028
1029
1030
# File 'lib/herb/action_view/render_analyzer.rb', line 1027

def initialize(file)
  @file = file
  @render_calls = []
end

Instance Attribute Details

#render_callsObject (readonly)

Returns the value of attribute render_calls.



1025
1026
1027
# File 'lib/herb/action_view/render_analyzer.rb', line 1025

def render_calls
  @render_calls
end

Instance Method Details

#visit_erb_render_node(node) ⇒ Object



1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
# File 'lib/herb/action_view/render_analyzer.rb', line 1032

def visit_erb_render_node(node)
  call = { file: @file }

  call[:partial] = node.partial_path if node.static_partial?
  call[:template_path] = node.template_name if node.template_name
  call[:layout] = node.layout_name if node.layout_name
  call[:file_path] = node.keywords&.file&.value if node.keywords&.file
  call[:inline] = true if node.keywords&.inline_template
  call[:renderable] = node.keywords&.renderable&.value if node.keywords&.renderable
  call[:dynamic] = true if node.dynamic?

  call[:body] = true if node.keywords&.body
  call[:plain] = true if node.keywords&.plain
  call[:html] = true if node.keywords&.html

  if node.location
    call[:location] = "#{node.location.start.line}:#{node.location.start.column}"
  end

  @render_calls << call

  super
end