Module: AstrologicalForecast::Facts

Defined in:
lib/astrological_forecast/facts.rb

Constant Summary collapse

TYPES =
{
  'Общий' => 'general',
  'Любовный' => 'love',
  'Семейный' => 'family',
  'Карьерный' => 'career',
  'Здоровье' => 'health',
  'Тинейджер' => 'tinager',
  'Флирт' => 'flirt',
  'Друзья' => 'amigos'
}.freeze
PERIOD =
{
  'На сегодня' => 'today',
  'На завтра' => 'tomorrow',
  'На неделю' => 'week',
  'На месяц' => 'month',
  'На год' => 'year'
}.freeze

Class Method Summary collapse

Class Method Details

.give_periodObject



35
36
37
38
39
40
41
# File 'lib/astrological_forecast/facts.rb', line 35

def give_period
  PERIOD.each_with_index do |period, index|
    puts "#{index + 1}. #{period[0]}"
  end
  puts
  print '> '
end

.give_typesObject



25
26
27
28
29
30
31
32
33
# File 'lib/astrological_forecast/facts.rb', line 25

def give_types

  TYPES.each_with_index do |type, index|

    puts "#{index + 1}. #{type[0]}"
  end
  puts
  print '> '
end

.sign_identification(signs, user_date_string) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/astrological_forecast/facts.rb', line 43

def sign_identification(signs, user_date_string)
  user_date = Date.parse("#{user_date_string}.2000")

  user_sign = nil

  # Для ассоциативных массивов, как и для обычных, тоже есть метод each, он кладет
  # в переменные блока по очереди каждую пару ключ-значение.
  signs.each do |_, sign|
    dates = sign['dates'].split('..').map do |date_string|
      Date.parse("#{date_string}.2000")
    end

    user_sign = sign if dates.first <= user_date && user_date <= dates.last
  end

  user_sign
end