Sha256: 1edb9baaf60331cb2eeb6b6d9092169a71f41b0932edbe0bf10007e73cf90c8e

Contents?: true

Size: 987 Bytes

Versions: 3

Compression:

Stored size: 987 Bytes

Contents

# frozen_string_literal: true

module RubyCritic
  module Command
    class StatusReporter
      attr_reader :status, :status_message, :score

      SUCCESS = 0
      SCORE_BELOW_MINIMUM = 1

      def initialize(options)
        @options = options
        @status = SUCCESS
      end

      def score=(input_score)
        @score = input_score.round(2)
        update_status
      end

      private

      def update_status
        @status = current_status
        update_status_message
      end

      def current_status
        satisfy_minimum_score_rule ? SUCCESS : SCORE_BELOW_MINIMUM
      end

      def satisfy_minimum_score_rule
        score >= @options[:minimum_score].to_f
      end

      def update_status_message
        case @status
        when SUCCESS
          @status_message = "Score: #{score}"
        when SCORE_BELOW_MINIMUM
          @status_message = "Score (#{score}) is below the minimum #{@options[:minimum_score]}"
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubycritic-4.9.1 lib/rubycritic/commands/status_reporter.rb
rubycritic-4.9.0 lib/rubycritic/commands/status_reporter.rb
rubycritic-4.8.1 lib/rubycritic/commands/status_reporter.rb