Sha256: db812f1d295b71f2303238e169821ab659c258731a971d6cb765c0439a62b839

Contents?: true

Size: 1.23 KB

Versions: 6

Compression:

Stored size: 1.23 KB

Contents

require 'codeqa/utils/erb_sanitizer'
require 'open3'
module Codeqa
  module Checkers
    class CheckErbHtml < Checker
      def self.check?(sourcefile)
        sourcefile.html?
      end

      def name
        'erb html'
      end

      def hint
        'The html I see after removing the erb stuff is not valid (find the unclosed tags and attributes).'
      end

      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

      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
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
codeqa-0.5.0 lib/codeqa/checkers/check_erb_html.rb
codeqa-0.4.2 lib/codeqa/checkers/check_erb_html.rb
codeqa-0.4.1 lib/codeqa/checkers/check_erb_html.rb
codeqa-0.4.0 lib/codeqa/checkers/check_erb_html.rb
codeqa-0.4.0.pre2 lib/codeqa/checkers/check_erb_html.rb
codeqa-0.4.0.pre lib/codeqa/checkers/check_erb_html.rb