Class: AstrologicalForecast::Type
- Inherits:
-
Object
- Object
- AstrologicalForecast::Type
- Defined in:
- lib/astrological_forecast/type.rb
Constant Summary collapse
- TYPES =
AstrologicalForecast::Facts::TYPES
- PERIODS =
AstrologicalForecast::Facts::PERIOD
Instance Attribute Summary collapse
-
#user_period ⇒ Object
readonly
Returns the value of attribute user_period.
-
#user_type ⇒ Object
readonly
Returns the value of attribute user_type.
Instance Method Summary collapse
- #correct(feature) ⇒ Object
-
#initialize(type:, period:) ⇒ Type
constructor
A new instance of Type.
-
#manual_check(opt, const, error) ⇒ Object
Проверка на корректность заданного типа прогноза и периода прогнозирования.
-
#period_console ⇒ Object
Выбор периода прогнозирования для определенного знака зодиака через консоль.
-
#type_console ⇒ Object
Выбор разновидности(типа) гороскопа для определенного знака зодиака через консоль.
Constructor Details
#initialize(type:, period:) ⇒ Type
Returns a new instance of Type.
10 11 12 13 14 15 16 17 18 |
# File 'lib/astrological_forecast/type.rb', line 10 def initialize(type:, period:) @type = correct(type) @period = correct(period) @user_type = @type.nil? ? type_console : manual_check(@type, TYPES, IncorrectType) @user_period = @period.nil? ? period_console : manual_check(@period, PERIODS, IncorrectPeriod) end |
Instance Attribute Details
#user_period ⇒ Object (readonly)
Returns the value of attribute user_period.
8 9 10 |
# File 'lib/astrological_forecast/type.rb', line 8 def user_period @user_period end |
#user_type ⇒ Object (readonly)
Returns the value of attribute user_type.
8 9 10 |
# File 'lib/astrological_forecast/type.rb', line 8 def user_type @user_type end |
Instance Method Details
#correct(feature) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/astrological_forecast/type.rb', line 20 def correct(feature) return nil if feature.nil? feature = feature.is_a?(String) ? feature : feature.to_s feature.strip.downcase.capitalize end |
#manual_check(opt, const, error) ⇒ Object
Проверка на корректность заданного типа прогноза и периода прогнозирования
65 66 67 68 69 70 71 72 73 |
# File 'lib/astrological_forecast/type.rb', line 65 def manual_check(opt, const, error) types = const.each_with_index.with_object({}) do |(var, i), result| result[var[0]] = i + 1 end raise error if types[opt].nil? types[opt] end |
#period_console ⇒ Object
Выбор периода прогнозирования для определенного знака зодиака через консоль
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/astrological_forecast/type.rb', line 47 def period_console puts "Выберите период прогнозирования? Введите число от 1 до #{PERIODS.size}:\n\n" AstrologicalForecast::Facts.give_period user_period = $stdin.gets.to_i puts until user_period.between?(1, PERIODS.size) print "Введите число от 1 до #{PERIODS.size}: " user_period = $stdin.gets.to_i puts end user_period end |
#type_console ⇒ Object
Выбор разновидности(типа) гороскопа для определенного знака зодиака через консоль
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/astrological_forecast/type.rb', line 29 def type_console puts "\nВыберите разновидность гороскопа? Введите число от 1 до #{TYPES.size}:\n\n" AstrologicalForecast::Facts.give_types user_type = $stdin.gets.to_i puts until user_type.between?(1, TYPES.size) print "Введите номер от 1 до #{TYPES.size}: " user_type = $stdin.gets.to_i puts end user_type end |