Class: Nengo

Inherits:
Object
  • Object
show all
Defined in:
lib/nengo.rb

Constant Summary collapse

JIDAI_DATA_PATH =
File.join(__dir__, "data", "jidai_data.json")
ANIMAL_LIST_ETO_PATH =
File.join(__dir__, "data", "animal_list_eto.json")
ELEMENT_LIST_ETO_PATH =
File.join(__dir__, "data", "element_list_eto.json")

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(year = nil) ⇒ Nengo



16
17
18
19
20
# File 'lib/nengo.rb', line 16

def initialize(year = nil)
  year = year.nil? ? current_year_seireki : year
  @jidai_data = load_jidai_data
  set_by_seireki(year)
end

Instance Attribute Details

#data_etoObject (readonly)

Returns the value of attribute data_eto.



8
9
10
# File 'lib/nengo.rb', line 8

def data_eto
  @data_eto
end

#data_nengoObject (readonly)

Returns the value of attribute data_nengo.



7
8
9
# File 'lib/nengo.rb', line 7

def data_nengo
  @data_nengo
end

#jidai_dataObject (readonly)

Returns the value of attribute jidai_data.



10
11
12
# File 'lib/nengo.rb', line 10

def jidai_data
  @jidai_data
end

#nenreiObject (readonly)

Returns the value of attribute nenrei.



9
10
11
# File 'lib/nengo.rb', line 9

def nenrei
  @nenrei
end

#year_kokiObject (readonly)

Returns the value of attribute year_koki.



6
7
8
# File 'lib/nengo.rb', line 6

def year_koki
  @year_koki
end

#year_seirekiObject (readonly)

Returns the value of attribute year_seireki.



5
6
7
# File 'lib/nengo.rb', line 5

def year_seireki
  @year_seireki
end

Instance Method Details

#current_year_seirekiObject



31
32
33
# File 'lib/nengo.rb', line 31

def current_year_seireki
  Time.now.year
end

#eto_first_three(year_seireki) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/nengo.rb', line 104

def eto_first_three(year_seireki)
  case year_seireki
  when 1
    58
  when 2
    59
  when 3
    60
  else
    raise "入力された年が無効です"
  end
end

#get_animal_eto(year_rel) ⇒ Object



78
79
80
81
82
83
# File 'lib/nengo.rb', line 78

def get_animal_eto(year_rel)
  year_animal = year_rel == 10 ? year_rel : (year_rel % 10) + 1
  animal_list_eto = JSON.parse(File.read(ANIMAL_LIST_ETO_PATH))
  year_animal = animal_list_eto.select { |hash| hash["id"] == year_animal }.first
  year_animal
end

#get_data_eto(year_seireki) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/nengo.rb', line 59

def get_data_eto(year_seireki)
  data_eto = {}
  year_rel = get_year_eto(year_seireki)
  data_eto[:year_rel] = year_rel
  data_eto[:animal] = get_animal_eto(year_rel)
  data_eto[:element] = get_element_eto(year_rel)
  data_eto
end

#get_data_nengo(year_seireki) ⇒ Object



53
54
55
56
57
# File 'lib/nengo.rb', line 53

def get_data_nengo(year_seireki)
  data_nengo = @jidai_data.select { |jidai| jidai["begin_yr"] <= year_seireki && jidai["end_yr"] >= year_seireki }.first
  data_nengo["year_rel"] = year_seireki - data_nengo["begin_yr"] + 1
  data_nengo
end

#get_element_eto(year_rel) ⇒ Object



85
86
87
88
89
# File 'lib/nengo.rb', line 85

def get_element_eto(year_rel)
  year_element = year_rel == 12 ? year_rel : year_rel % 12
  element_list_eto = JSON.parse(File.read(ELEMENT_LIST_ETO_PATH))
  element_list_eto.select { |hash| hash["id"] == year_element }.first
end

#get_koki(year_seireki) ⇒ Object



95
96
97
# File 'lib/nengo.rb', line 95

def get_koki(year_seireki)
  year_seireki + 660
end

#get_nenrei(year_seireki) ⇒ Object



91
92
93
# File 'lib/nengo.rb', line 91

def get_nenrei(year_seireki)
  current_year_seireki - year_seireki
end

#get_year_eto(year_seireki) ⇒ Object



68
69
70
71
72
73
74
75
76
# File 'lib/nengo.rb', line 68

def get_year_eto(year_seireki)
  if year_seireki >= 4
    (year_seireki - 3) % 60
  elsif year_seireki < 0
    60 - ((year_seireki + 2) % 60)
  else
    eto_first_three(year_seireki)
  end
end

#nengo_to_seireki(data_nengo) ⇒ Object



99
100
101
102
# File 'lib/nengo.rb', line 99

def nengo_to_seireki(data_nengo)
  current_jidai = @jidai_data.select { |jidai_hash| jidai_hash["name"] == data_nengo[:jidai] }.first
  current_jidai["begin_yr"].to_i + data_nengo[:year_rel] - 1
end

#set_by_koki(koki) ⇒ Object



47
48
49
50
51
# File 'lib/nengo.rb', line 47

def set_by_koki(koki)
  @year_seireki = koki - 660
  set_by_seireki(@year_seireki)
  true
end

#set_by_nengo(nengo_data) ⇒ Object



35
36
37
38
39
# File 'lib/nengo.rb', line 35

def set_by_nengo(nengo_data)
  @year_seireki = nengo_to_seireki(nengo_data)
  set_by_seireki(@year_seireki)
  true
end

#set_by_nenrei(nenrei) ⇒ Object



41
42
43
44
45
# File 'lib/nengo.rb', line 41

def set_by_nenrei(nenrei)
  @year_seireki = current_year_seireki - nenrei
  set_by_seireki(@year_seireki)
  true
end

#set_by_seireki(year_seireki) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/nengo.rb', line 22

def set_by_seireki(year_seireki)
  @year_seireki = year_seireki
  @data_nengo = get_data_nengo(@year_seireki)
  @nenrei = get_nenrei(@year_seireki)
  @data_eto = get_data_eto(@year_seireki)
  @year_koki = get_koki(@year_seireki)
  true
end