class Codeqa::Checkers::CheckErbHtml

Public Class Methods

check?(sourcefile) click to toggle source
# File lib/codeqa/checkers/check_erb_html.rb, line 6
def self.check?(sourcefile)
  sourcefile.html?
end

Public Instance Methods

check() click to toggle source
# File lib/codeqa/checkers/check_erb_html.rb, line 18
def check
  result = nil
  with_existing_file(html) do |filename|
    Open3.popen3("tidy -q -e -xml '#{filename}'") do |_in_stream, _out_stream, err_stream|
      message = err_stream.read
      result = message if message =~ /(Error:|missing trailing quote|end of file while parsing attributes)/m
    end # IO.popen
  end # Tempfile

  return unless result
  errors.add(:source, html)
  errors.add(nil, result)
end
hint() click to toggle source
# File lib/codeqa/checkers/check_erb_html.rb, line 14
def hint
  'The html I see after removing the erb stuff is not valid (find the unclosed tags and attributes).'
end
html() click to toggle source
# File lib/codeqa/checkers/check_erb_html.rb, line 32
def html
  @html ||= begin
              html = ErbSanitizer.new(sourcefile.content).result
              html = html.force_encoding('UTF-8') if html.respond_to?(:force_encoding)
              html.gsub(%r{<script[ >].*?</script>|<style[ >].*?</style>}m,
                        '<!--removed script/style tag-->')
            end
end
name() click to toggle source
# File lib/codeqa/checkers/check_erb_html.rb, line 10
def name
  'erb html'
end