class BetterHtml::TestHelper::SafeErb::NoStatements

Public Instance Methods

validate() click to toggle source
# File lib/better_html/test_helper/safe_erb/no_statements.rb, line 7
def validate
  script_tags.each do |tag, content_node|
    no_statements(content_node) unless content_node.present? && tag.attributes['type']&.value == "text/html"
  end

  if @parser.template_language == :javascript
    @parser.nodes_with_type(:text).each do |node|
      no_statements(node)
    end
  end

  @parser.nodes_with_type(:cdata, :comment).each do |node|
    no_statements(node)
  end
end

Private Instance Methods

no_statements(node) click to toggle source
# File lib/better_html/test_helper/safe_erb/no_statements.rb, line 25
def no_statements(node)
  erb_nodes(node).each do |erb_node, indicator_node, code_node|
    next unless indicator_node.nil?
    source = code_node.loc.source
    next if /\A\s*end/m === source

    add_error(
      "erb statement not allowed here; did you mean '<%=' ?",
      location: erb_node.loc,
    )
  end
end