lib/app/entities/guess.rb
# frozen_string_literal: true
module Codebreaker
class Guess < ValidatableEntity
attr_reader :input, :errors
HINT = 'hint'
def initialize(input)
super()
@input = input
end
def validate
return if hint?
@errors << I18n.t('invalid.include_error') unless check_numbers?(@input, valid_numbers)
@errors << I18n.t('invalid.size_error') unless check_size?(@input, Game::CODE_SIZE)
end
def as_array_of_numbers
@as_array_of_numbers ||= @input.chars.map(&:to_i)
end
def hint?
@input == HINT
end
private
def valid_numbers
Game::INCLUDE_IN_GAME_NUMBERS.map(&:to_s)
end
end
end