jma_code 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/jma_code/area_forecast_local.rb +75 -1
- data/lib/jma_code/area_information_city.rb +46 -20
- data/lib/jma_code/prefecture.rb +1 -1
- data/lib/jma_code/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bbdf42a7d23265f5ef359b28bf5c6d44fe2effb7d73cd620b3a6f38c1339ebd2
|
|
4
|
+
data.tar.gz: 269adeeb6213bf011b44a35c20872e7cde18600f4e038d8c2d60cbb5380d65a1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b24c689d7f69eb67e27b04a460895104e7a18a32afce639dbbc9788a224a20fd7c6f7a2e5ec0bdac16e5c45da4ca2452c3ebe3c4b8b246e89451513424bfdff
|
|
7
|
+
data.tar.gz: acd1941675e1c09ec4d8f8e47707586a53f41d2d95bfd4bd9f4b447252d7f32d0ac46d18ad650b10fbffc5dfcf98db93d09df1f6256a5f35ac3a37472360915d
|
|
@@ -92,6 +92,67 @@ module JMACode
|
|
|
92
92
|
used_by: used_by_fields.select{|f| row[f] == '1'}.map{|f| f.to_s.sub(/\Aused_by_/, '').to_sym}
|
|
93
93
|
)
|
|
94
94
|
end
|
|
95
|
+
|
|
96
|
+
def build_tree(areas=nil, cities=nil)
|
|
97
|
+
areas ||= get
|
|
98
|
+
cities ||= JMACode::AreaInformationCity.get
|
|
99
|
+
|
|
100
|
+
toplevels, areas = areas.partition{|a| a.any_belonging_locals.blank?}
|
|
101
|
+
pref_areas = areas.group_by(&:prefecture_code)
|
|
102
|
+
pref_cities = cities.group_by(&:prefecture_code)
|
|
103
|
+
toplevels.group_by(&:prefecture).map{|pref, pref_toplevels|
|
|
104
|
+
current_areas = pref_areas[pref.code]
|
|
105
|
+
current_cities = pref_cities[pref.code]
|
|
106
|
+
|
|
107
|
+
[
|
|
108
|
+
block_given? ? yield(pref) : pref,
|
|
109
|
+
pref_toplevels.map{|t|
|
|
110
|
+
secondlevels = (current_areas+current_cities).select{|a| a.child_of?(t)}
|
|
111
|
+
secondlevels_children = secondlevels.map{|s|
|
|
112
|
+
thirdlevels = (current_areas+current_cities).select{|a| a.child_of?(s)}
|
|
113
|
+
thirdlevels_children = thirdlevels.map{|th|
|
|
114
|
+
forthlevels = current_cities.select{|c| c.child_of?(th)}
|
|
115
|
+
[
|
|
116
|
+
block_given? ? yield(th) : th,
|
|
117
|
+
forthlevels.map{|f|
|
|
118
|
+
[block_given? ? yield(f) : f, nil]
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
[
|
|
123
|
+
block_given? ? yield(s) : s,
|
|
124
|
+
thirdlevels_children
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
[
|
|
128
|
+
block_given? ? yield(t) : t,
|
|
129
|
+
secondlevels_children
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def walk_tree(tree, &block)
|
|
138
|
+
tree.map do |area, children|
|
|
139
|
+
a = block.call(area)
|
|
140
|
+
c = if children.is_a?(Array) and children.present?
|
|
141
|
+
walk_tree(children, &block)
|
|
142
|
+
else
|
|
143
|
+
children
|
|
144
|
+
end
|
|
145
|
+
[a, c]
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def prefecture_code
|
|
151
|
+
@prefecture_code ||= code[0, 2]
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def prefecture
|
|
155
|
+
@prefecture ||= Prefecture.get.find{|pref| pref.code == prefecture_code}
|
|
95
156
|
end
|
|
96
157
|
|
|
97
158
|
def area_information_cities
|
|
@@ -113,7 +174,20 @@ module JMACode
|
|
|
113
174
|
end
|
|
114
175
|
|
|
115
176
|
def any_belonging_locals
|
|
116
|
-
[belonging_local_in_weather_alert, belonging_local_in_tornado_alert].compact.uniq(&:code)
|
|
177
|
+
@any_belonging_locals ||= [belonging_local_in_weather_alert, belonging_local_in_tornado_alert].compact.uniq(&:code)
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def any_ancestry_locals
|
|
181
|
+
@any_ancestry_locals ||= [
|
|
182
|
+
belonging_local_in_weather_alert,
|
|
183
|
+
belonging_local_in_tornado_alert,
|
|
184
|
+
belonging_local_in_weather_alert&.belonging_local_in_weather_alert,
|
|
185
|
+
belonging_local_in_tornado_alert&.belonging_local_in_tornado_alert,
|
|
186
|
+
].compact.uniq(&:code)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def child_of?(area_or_city)
|
|
190
|
+
any_belonging_locals.map(&:code).include?(area_or_city.code)
|
|
117
191
|
end
|
|
118
192
|
|
|
119
193
|
def to_csv_row
|
|
@@ -3,7 +3,7 @@ module JMACode
|
|
|
3
3
|
using Blank
|
|
4
4
|
|
|
5
5
|
class AreaInformationCity < Struct.new(
|
|
6
|
-
:code, :
|
|
6
|
+
:code, :long_name, :alt_name, :alt_name_phonetic,
|
|
7
7
|
:area_forecast_local_code, :used_by,
|
|
8
8
|
keyword_init: true
|
|
9
9
|
)
|
|
@@ -11,24 +11,24 @@ module JMACode
|
|
|
11
11
|
NUM_HEADER_ROWS = 3
|
|
12
12
|
HEADERS = %i(
|
|
13
13
|
code
|
|
14
|
-
|
|
14
|
+
long_name
|
|
15
15
|
name_used_by_weather
|
|
16
16
|
name_phonetic_used_by_weather
|
|
17
17
|
area_forecast_local_code
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
used_by_weather
|
|
19
|
+
used_by_tornado
|
|
20
|
+
used_by_storm_surge
|
|
21
|
+
used_by_high_wave
|
|
22
|
+
used_by_landslide
|
|
23
|
+
used_by_flood
|
|
24
24
|
name_used_by_earthquake
|
|
25
25
|
name_phonetic_used_by_earthquake
|
|
26
26
|
name_used_by_volcano
|
|
27
27
|
name_phonetic_used_by_volcano
|
|
28
28
|
name_used_by_uv
|
|
29
29
|
name_phonetic_used_by_uv
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
name_used_by_rainstorm
|
|
31
|
+
name_phonetic_used_by_rainstorm
|
|
32
32
|
)
|
|
33
33
|
|
|
34
34
|
class << self
|
|
@@ -63,36 +63,62 @@ module JMACode
|
|
|
63
63
|
[row[:name_used_by_volcano], row[:name_phonetic_used_by_volcano]]
|
|
64
64
|
elsif row[:name_used_by_uv].present?
|
|
65
65
|
[row[:name_used_by_uv], row[:name_phonetic_used_by_uv]]
|
|
66
|
-
elsif row[:
|
|
67
|
-
[row[:
|
|
66
|
+
elsif row[:name_used_by_rainstorm].present?
|
|
67
|
+
[row[:name_used_by_rainstorm], row[:name_phonetic_used_by_rainstorm]]
|
|
68
68
|
else
|
|
69
69
|
[]
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
new(
|
|
73
73
|
code: row[:code],
|
|
74
|
-
|
|
74
|
+
long_name: row[:long_name],
|
|
75
75
|
alt_name: alt_name,
|
|
76
76
|
alt_name_phonetic: alt_name_phonetic,
|
|
77
77
|
area_forecast_local_code: row[:area_forecast_local_code],
|
|
78
78
|
used_by: [
|
|
79
|
-
row[:
|
|
80
|
-
row[:
|
|
81
|
-
row[:
|
|
82
|
-
row[:
|
|
83
|
-
row[:
|
|
84
|
-
row[:
|
|
79
|
+
row[:used_by_weather] == '1' ? :weather : nil,
|
|
80
|
+
row[:used_by_tornado] == '1' ? :tornado : nil,
|
|
81
|
+
row[:used_by_storm_surge] == '1' ? :storm_surge : nil,
|
|
82
|
+
row[:used_by_high_wave] == '1' ? :high_wave : nil,
|
|
83
|
+
row[:used_by_landslide] == '1' ? :landslide : nil,
|
|
84
|
+
row[:used_by_flood] == '1' ? :flood : nil,
|
|
85
85
|
row[:name_used_by_earthquake].present? ? :earthquake : nil,
|
|
86
86
|
row[:name_used_by_volcano].present? ? :volcano : nil,
|
|
87
87
|
row[:name_used_by_uv].present? ? :uv : nil,
|
|
88
|
-
row[:
|
|
88
|
+
row[:name_used_by_rainstorm].present? ? :rainstorm : nil,
|
|
89
89
|
].compact
|
|
90
90
|
)
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
+
def name
|
|
95
|
+
alt_name.presence || long_name
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def name_phonetic
|
|
99
|
+
alt_name_phonetic
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def prefecture_code
|
|
103
|
+
@prefecture_code ||= code[0, 2]
|
|
104
|
+
end
|
|
105
|
+
|
|
94
106
|
def area_forecast_local
|
|
95
107
|
@area_forecast_local ||= AreaForecastLocal.get.find{|x| x.code == area_forecast_local_code}
|
|
96
108
|
end
|
|
109
|
+
|
|
110
|
+
def child_of?(area_or_city)
|
|
111
|
+
area_forecast_local_code == area_or_city.code
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def to_h
|
|
115
|
+
{
|
|
116
|
+
code: code,
|
|
117
|
+
name: name,
|
|
118
|
+
name_phonetic: name_phonetic,
|
|
119
|
+
area_forecast_local_code: area_forecast_local_code,
|
|
120
|
+
used_by: used_by,
|
|
121
|
+
}
|
|
122
|
+
end
|
|
97
123
|
end
|
|
98
124
|
end
|
data/lib/jma_code/prefecture.rb
CHANGED
|
@@ -24,7 +24,7 @@ module JMACode
|
|
|
24
24
|
[18, '福井県', '福井', 'fukui'],
|
|
25
25
|
[19, '山梨県', '山梨', 'yamanashi'],
|
|
26
26
|
[20, '長野県', '長野', 'nagano'],
|
|
27
|
-
[
|
|
27
|
+
[21, '岐阜県', '岐阜', 'gifu'],
|
|
28
28
|
[22, '静岡県', '静岡', 'shizuoka'],
|
|
29
29
|
[23, '愛知県', '愛知', 'aichi'],
|
|
30
30
|
[24, '三重県', '三重', 'mie'],
|
data/lib/jma_code/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jma_code
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- metheglin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-08-
|
|
11
|
+
date: 2024-08-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|