Sha256: be363e83b4efd56b78fb5696d6aa5502a9eeef1b1b59e4113ca8c29cd8944014

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 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(dep)
        " #{dep.name}: #{ yield dep }\n"
      end

      def format_dependency(dep)
        if dep.gem_not_found?
          "not found"
        elsif dep.valid?
          valid_dependency(dep)
        else
          invalid_dependency(dep)
        end
      end

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

      def invalid_dependency(dep)
        "#{dep.expected_version} != #{red}#{dep.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.10 lib/gem_version_check/formatter/pretty_print.rb