Class: Nengo
- Inherits:
-
Object
- Object
- Nengo
- 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
-
#data_eto ⇒ Object
readonly
Returns the value of attribute data_eto.
-
#data_nengo ⇒ Object
readonly
Returns the value of attribute data_nengo.
-
#jidai_data ⇒ Object
readonly
Returns the value of attribute jidai_data.
-
#nenrei ⇒ Object
readonly
Returns the value of attribute nenrei.
-
#year_koki ⇒ Object
readonly
Returns the value of attribute year_koki.
-
#year_seireki ⇒ Object
readonly
Returns the value of attribute year_seireki.
Instance Method Summary collapse
- #current_year_seireki ⇒ Object
- #eto_first_three(year_seireki) ⇒ Object
- #get_animal_eto(year_rel) ⇒ Object
- #get_data_eto(year_seireki) ⇒ Object
- #get_data_nengo(year_seireki) ⇒ Object
- #get_element_eto(year_rel) ⇒ Object
- #get_koki(year_seireki) ⇒ Object
- #get_nenrei(year_seireki) ⇒ Object
- #get_year_eto(year_seireki) ⇒ Object
-
#initialize(year = nil) ⇒ Nengo
constructor
A new instance of Nengo.
- #nengo_to_seireki(data_nengo) ⇒ Object
- #set_by_koki(koki) ⇒ Object
- #set_by_nengo(nengo_data) ⇒ Object
- #set_by_nenrei(nenrei) ⇒ Object
- #set_by_seireki(year_seireki) ⇒ Object
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_eto ⇒ Object (readonly)
Returns the value of attribute data_eto.
8 9 10 |
# File 'lib/nengo.rb', line 8 def data_eto @data_eto end |
#data_nengo ⇒ Object (readonly)
Returns the value of attribute data_nengo.
7 8 9 |
# File 'lib/nengo.rb', line 7 def data_nengo @data_nengo end |
#jidai_data ⇒ Object (readonly)
Returns the value of attribute jidai_data.
10 11 12 |
# File 'lib/nengo.rb', line 10 def jidai_data @jidai_data end |
#nenrei ⇒ Object (readonly)
Returns the value of attribute nenrei.
9 10 11 |
# File 'lib/nengo.rb', line 9 def nenrei @nenrei end |
#year_koki ⇒ Object (readonly)
Returns the value of attribute year_koki.
6 7 8 |
# File 'lib/nengo.rb', line 6 def year_koki @year_koki end |
#year_seireki ⇒ Object (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_seireki ⇒ Object
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 |