Sha256: 999d1ee330cce649c62ade7c4badd1bd37ec9695778e31e988e5d0e2346f4cc0

Contents?: true

Size: 1.97 KB

Versions: 25

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

module PlatformosCheck
  class Printer
    def initialize(out_stream = STDOUT)
      @out = out_stream
    end

    def print(platformos_app, offenses, auto_correct)
      offenses.each do |offense|
        print_offense(offense, auto_correct)
        @out.puts
      end

      correctable = offenses.select(&:correctable?)
      @out.puts "#{platformos_app.all.size} files inspected, #{red(offenses.size.to_s + ' offenses')} detected, \
#{yellow(correctable.size.to_s + ' offenses')} #{auto_correct ? 'corrected' : 'auto-correctable'}"
    end

    def print_offense(offense, auto_correct)
      location = if offense.location
                   blue(offense.location) + ": "
                 else
                   ""
                 end

      corrected = if auto_correct && offense.correctable?
                    green("[Corrected] ")
                  else
                    ""
                  end

      @out.puts location +
                colorized_severity(offense.severity) + ": " +
                yellow(offense.check_name) + ": " +
                corrected +
                offense.message + "."
      return unless offense.source_excerpt

      @out.puts "\t#{offense.source_excerpt}"
      return unless offense.markup_start_in_excerpt

      @out.puts "\t" + (" " * offense.markup_start_in_excerpt) + ("^" * offense.markup.size)
    end

    private

    def colorize(str, color_code)
      "\e[#{color_code}m#{str}\e[0m"
    end

    def colorized_severity(severity)
      case severity
      when :error
        red(severity)
      when :suggestion
        pink(severity)
      when :style
        light_blue(severity)
      end
    end

    def red(str)
      colorize(str, 31)
    end

    def green(str)
      colorize(str, 32)
    end

    def yellow(str)
      colorize(str, 33)
    end

    def blue(str)
      colorize(str, 34)
    end

    def pink(str)
      colorize(str, 35)
    end

    def light_blue(str)
      colorize(str, 36)
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
platformos-check-0.4.14 lib/platformos_check/printer.rb
platformos-check-0.4.13 lib/platformos_check/printer.rb
platformos-check-0.4.12 lib/platformos_check/printer.rb
platformos-check-0.4.11 lib/platformos_check/printer.rb
platformos-check-0.4.10 lib/platformos_check/printer.rb
platformos-check-0.4.9 lib/platformos_check/printer.rb
platformos-check-0.4.8 lib/platformos_check/printer.rb
platformos-check-0.4.7 lib/platformos_check/printer.rb
platformos-check-0.4.6 lib/platformos_check/printer.rb
platformos-check-0.4.5 lib/platformos_check/printer.rb
platformos-check-0.4.4 lib/platformos_check/printer.rb
platformos-check-0.4.3 lib/platformos_check/printer.rb
platformos-check-0.4.2 lib/platformos_check/printer.rb
platformos-check-0.4.1 lib/platformos_check/printer.rb
platformos-check-0.4.0 lib/platformos_check/printer.rb
platformos-check-0.3.3 lib/platformos_check/printer.rb
platformos-check-0.3.1 lib/platformos_check/printer.rb
platformos-check-0.3.0 lib/platformos_check/printer.rb
platformos-check-0.2.2 lib/platformos_check/printer.rb
platformos-check-0.2.1 lib/platformos_check/printer.rb