Sha256: 6aecb52bde25ebbd151d0ce303d580c1ebb690713fcf6985551d38f0da5666b5

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

# -*- coding: UTF-8 -*-
module GemVersionCheck
  module Formatter
    class PrettyPrint

      def initialize(report_result)
        @report_result = Array(report_result)
      end

      def format
        @report_result.inject("") do |result, project|
          result << "#{project_title(project)}\n#{format_project(project)}"
        end
      end

      private

      def format_project(project)
        project.report.inject("") do |result, dependency|
          result << dependency_listitem(dependency) do |dep|
            dep.used? ? format_dependency(dependency) : "not used"
          end
        end
      end

      def project_title(project)
        "Project: #{project.check_failed? ? red : green}#{project.name}#{black}" 
      end

      def dependency_listitem(dependency)
        " * #{dependency.name}: #{ yield dependency }\n"
      end

      def format_dependency(dependency)
        result = dependency.valid? ? valid_dependency(dependency) : invalid_dependency(dependency)
      end

      def valid_dependency(dependency)
        "#{green}#{dependency.expected_version} ✓#{black}"
      end

      def invalid_dependency(dependency)
        "#{dependency.expected_version} != #{red}#{dependency.version}#{black}"
      end

      def black
        "\033[30m"
      end

      def green
        "\033[32m"
      end

      def red
        "\033[31m"
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gem_version_check-0.0.9 lib/gem_version_check/formatter/pretty_print.rb