Sha256: 089b5d97af68edec5f0ac7baf45a4712b5070146188dd088ec1530d133e96d8b

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

require 'eac/listable'

module EacLauncher
  module Publish
    class CheckResult
      include ::Eac::Listable

      lists.add_string :status, :updated, :pending, :blocked, :outdated

      lists.status.values.each do |status|
        class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
          def self.#{status}(message)
            new('#{status}', message)
          end
        RUBY_EVAL
      end

      class << self
        def updated_color
          'green'
        end

        def pending_color
          'yellow'
        end

        def blocked_color
          'red'
        end

        def outdated_color
          'light_blue'
        end
      end

      attr_reader :status, :message

      def initialize(status, message)
        raise "Status \"#{status}\" not in #{self.class.lists.status.values}" unless
        self.class.lists.status.values.include?(status)
        @status = status
        @message = message
      end

      def to_s
        message.light_white.send("on_#{background_color}")
      end

      private

      def background_color
        self.class.send("#{status}_color")
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eac_launcher-0.4.0 lib/eac_launcher/publish/check_result.rb
eac_launcher-0.3.2 lib/eac_launcher/publish/check_result.rb
eac_launcher-0.3.1 lib/eac_launcher/publish/check_result.rb
eac_launcher-0.3.0 lib/eac_launcher/publish/check_result.rb