Class: JMACode::AreaRiver

Inherits:
Struct
  • Object
show all
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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.dataObject

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

#codeObject

Returns the value of attribute code

Returns:

  • (Object)

    the current value of code



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def code
  @code
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name
  @name
end

#name2Object

Returns the value of attribute name2

Returns:

  • (Object)

    the current value of name2



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name2
  @name2
end

#name3Object

Returns the value of attribute name3

Returns:

  • (Object)

    the current value of name3



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name3
  @name3
end

#name_phoneticObject

Returns the value of attribute name_phonetic

Returns:

  • (Object)

    the current value of name_phonetic



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name_phonetic
  @name_phonetic
end

#name_phonetic2Object

Returns the value of attribute name_phonetic2

Returns:

  • (Object)

    the current value of name_phonetic2



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name_phonetic2
  @name_phonetic2
end

#name_phonetic3Object

Returns the value of attribute name_phonetic3

Returns:

  • (Object)

    the current value of name_phonetic3



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def name_phonetic3
  @name_phonetic3
end

#prefecture_codesObject

Returns the value of attribute prefecture_codes

Returns:

  • (Object)

    the current value of prefecture_codes



4
5
6
# File 'lib/jma_code/area_river.rb', line 4

def prefecture_codes
  @prefecture_codes
end

Class Method Details

.getObject



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_listObject



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

#prefecturesObject



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_rowObject



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_stationsObject



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