Class: JMACode::AreaRiver
- Inherits:
-
Struct
- Object
- Struct
- JMACode::AreaRiver
- Defined in:
- lib/jma_code/area_river.rb
Constant Summary collapse
- CSV_ROW_SEP =
"\r\n"
- HEADERS =
%i(code name name_phonetic name2 name_phonetic2 name3 name_phonetic3 prefecture_codes)
- NUM_HEADER_ROWS =
3
- PREFECTURE_CODE_SEPARATOR =
'/'
Class Attribute Summary collapse
-
.data ⇒ Object
Returns the value of attribute data.
Instance Attribute Summary collapse
-
#code ⇒ Object
Returns the value of attribute code.
-
#name ⇒ Object
Returns the value of attribute name.
-
#name2 ⇒ Object
Returns the value of attribute name2.
-
#name3 ⇒ Object
Returns the value of attribute name3.
-
#name_phonetic ⇒ Object
Returns the value of attribute name_phonetic.
-
#name_phonetic2 ⇒ Object
Returns the value of attribute name_phonetic2.
-
#name_phonetic3 ⇒ Object
Returns the value of attribute name_phonetic3.
-
#prefecture_codes ⇒ Object
Returns the value of attribute prefecture_codes.
Class Method Summary collapse
Instance Method Summary collapse
- #add_prefecture_code(pref_code) ⇒ Object
- #prefecture_code_list ⇒ Object
- #prefectures ⇒ Object
- #to_csv_row ⇒ Object
- #water_level_stations ⇒ Object
Class Attribute Details
.data ⇒ Object
Returns the value of attribute data.
16 17 18 |
# File 'lib/jma_code/area_river.rb', line 16 def data @data end |
Instance Attribute Details
#code ⇒ Object
Returns the value of attribute code
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def code @code end |
#name ⇒ Object
Returns the value of attribute name
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name @name end |
#name2 ⇒ Object
Returns the value of attribute name2
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name2 @name2 end |
#name3 ⇒ Object
Returns the value of attribute name3
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name3 @name3 end |
#name_phonetic ⇒ Object
Returns the value of attribute name_phonetic
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name_phonetic @name_phonetic end |
#name_phonetic2 ⇒ Object
Returns the value of attribute name_phonetic2
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name_phonetic2 @name_phonetic2 end |
#name_phonetic3 ⇒ Object
Returns the value of attribute name_phonetic3
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def name_phonetic3 @name_phonetic3 end |
#prefecture_codes ⇒ Object
Returns the value of attribute prefecture_codes
4 5 6 |
# File 'lib/jma_code/area_river.rb', line 4 def prefecture_codes @prefecture_codes end |
Class Method Details
.get ⇒ Object
43 44 45 |
# File 'lib/jma_code/area_river.rb', line 43 def get @data ||= load end |
.load(**args) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/jma_code/area_river.rb', line 26 def load(**args) load_csv(**args) do |csv| csv.drop(NUM_HEADER_ROWS).map do |row| new( code: row[:code], name: row[:name], name_phonetic: row[:name_phonetic], name2: row[:name2], name_phonetic2: row[:name_phonetic2], name3: row[:name3], name_phonetic3: row[:name_phonetic3], prefecture_codes: row[:prefecture_codes] ) end end end |
.load_csv(version: "20230105-completed") ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/jma_code/area_river.rb', line 18 def load_csv(version: "20230105-completed") path = File.join(File.dirname(__FILE__), "../../data/#{version}_AreaRiver.csv") File.open(path) do |f| csv = CSV.new(f, headers: HEADERS, row_sep: CSV_ROW_SEP) yield(csv) end end |
Instance Method Details
#add_prefecture_code(pref_code) ⇒ Object
52 53 54 55 |
# File 'lib/jma_code/area_river.rb', line 52 def add_prefecture_code(pref_code) ids = (prefecture_code_list + [pref_code]).sort.uniq self.prefecture_codes = ids.join(PREFECTURE_CODE_SEPARATOR) end |
#prefecture_code_list ⇒ Object
48 49 50 |
# File 'lib/jma_code/area_river.rb', line 48 def prefecture_code_list @prefecture_code_list ||= (prefecture_codes || "").split(PREFECTURE_CODE_SEPARATOR) end |
#prefectures ⇒ Object
57 58 59 60 61 |
# File 'lib/jma_code/area_river.rb', line 57 def prefectures @prefectures ||= Prefecture.get.select{|pref| prefecture_code_list.include?(pref.code) } end |
#to_csv_row ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/jma_code/area_river.rb', line 67 def to_csv_row HEADERS.map do |k| respond_to?(k) ? public_send(k) : nil end end |
#water_level_stations ⇒ Object
63 64 65 |
# File 'lib/jma_code/area_river.rb', line 63 def water_level_stations @water_level_stations ||= WaterLevelStation.get.select{|w| w.river_code == code} end |