|
10 | 10 | #
|
11 | 11 | # 詳細: https://github.com/coderdojo-japan/coderdojo.jp/pull/1433
|
12 | 12 |
|
13 |
| -TEXT = IO.readlines('./get_dojo_list.txt') |
14 |
| -DOJOS = JSON.parse(Net::HTTP.get URI.parse('https://coderdojo.jp/dojos.json')) |
15 |
| -result = "<ul>\n" |
| 13 | +INPUT_TEXT = IO.readlines('./get_dojo_list.txt') |
| 14 | +DOJO_DB = JSON.parse(Net::HTTP.get URI.parse('https://coderdojo.jp/dojos.json')).map do |data| |
| 15 | + data.transform_keys!(&:to_sym) |
| 16 | +end |
16 | 17 |
|
17 | 18 | # CoderDojo の名前を使って、Dojo 一覧からデータを検索
|
18 |
| -dojo_name ='' |
| 19 | +result = "<ul>\n" |
| 20 | +dojo_name = '' |
| 21 | +dojo_list = [] |
19 | 22 | not_found = []
|
20 |
| -TEXT.each do |line| |
| 23 | +INPUT_TEXT.each do |line| |
21 | 24 | next if line.start_with?('#') || line.strip.empty?
|
22 |
| - dojo_name = line.split[1..].join |
23 |
| - dojo_data = DOJOS.find {|dojo| dojo['name'].start_with? dojo_name} |
24 |
| - not_found << dojo_name && next if dojo_data.nil? |
25 |
| - result << " <li>#{dojo_data['linked_text']}</li>\n" |
26 |
| - #result << " <li>#{d['linked_text']}</li>\n" |
| 25 | + |
| 26 | + # Delete prefix like 'CoderDojo', fix 表記揺れ, etc. |
| 27 | + dojo_name = line |
| 28 | + .gsub(/coderdojo/i, '') |
| 29 | + .gsub(/コーダー道場/, '') |
| 30 | + .gsub('(', '(').gsub(')', ')') # Ex: Anjo(愛知県) |
| 31 | + .gsub(/\(.*\)+/, '') # Delete '(...)' |
| 32 | + .split('/').first # Ex: 堺/泉北和泉 |
| 33 | + .strip |
| 34 | + |
| 35 | + # Search dojo data by its KANJI name from DOJO_DB |
| 36 | + dojo_data = DOJO_DB.find do |dojo| |
| 37 | + binding.pry if dojo_name.nil? |
| 38 | + dojo[:name].start_with? dojo_name.downcase |
| 39 | + .gsub('ishigaki', '石垣') |
| 40 | + .gsub('kodaira', '小平') |
| 41 | + .gsub('toke', '土気') |
| 42 | + .gsub('anjo', '安城') |
| 43 | + .gsub('nagareyama', '流山') |
| 44 | + .gsub('minami-kashiwa', '南柏') |
| 45 | + .gsub('miyoshi', '三好') # NOTE: 'Miyoshi' can be 三好 and 三次. Only 三好 uses 'Miyoshi' for now. |
| 46 | + end |
| 47 | + |
| 48 | + dojo_data.nil? ? |
| 49 | + not_found << dojo_name && next : |
| 50 | + dojo_list << dojo_data |
27 | 51 | end
|
28 |
| -result << "</ul>\n" |
| 52 | + |
| 53 | +dojo_list.sort_by!{ |dojo| dojo[:order] } |
| 54 | +result << dojo_list.map{ |dojo| " <li>#{dojo[:linked_text]}</li>" }.join("\n") |
| 55 | +result << "\n</ul>\n" |
29 | 56 | puts result
|
30 | 57 |
|
| 58 | + |
| 59 | + |
31 | 60 | # 検索して見つからなかった Dojo 一覧があれば出力
|
32 |
| -puts '---' if not_found.nil? |
| 61 | +puts '--- NOTE ---' |
| 62 | +puts "道場数: #{dojo_list.count}" |
33 | 63 | not_found.each {|dojo_name| puts "Not found: #{dojo_name}" }
|
0 commit comments