Sha256: f4cecd225af6b0a493d5a562c433a04f010ddc5bfc9dddcc5db6d674c24f89e6

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Codebreakergem
  class InformationPresenter
    class << self
      def rules
        I18n.t(:rules)
      end

      def stats
        result = I18n.t(:stats_header)
        stats_from_file = FileWorker.read_from_file(Game::FILE)
        return result unless stats_from_file

        if stats_from_file.is_a? Array
          sorted_data = stats_from_file.sort_by { |item| [item[:order], item[:attempts_used], item[:hints_used]] }
          sorted_data.each_with_index { |item, index| result += stats_constructor(index + 1, item) }
        else
          result += stats_constructor(1, stats_from_file)
        end
        result
      end

      def stats_as_hash
        stats = FileWorker.read_from_file(Game::FILE)
        return stats.sort_by { |item| [item[:order], item[:attempts_used], item[:hints_used]] } if stats.is_a? Array

        stats
      end

      private

      def stats_constructor(index, item)
        "#{index}\t #{item[:name]}\t #{item[:difficulty]}\t #{item[:attempts_total]}\t " \
          "#{item[:attempts_used]}\t #{item[:hints_total]}\t #{item[:hints_used]}\t #{item[:game_time]}\n"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
codebreakergem-0.1.17 lib/classes/information_presenter.rb
codebreakergem-0.1.16 lib/classes/information_presenter.rb