Skip to content

Commit 582d9ef

Browse files
committed
Finish implementing get_dojo_list script #1433
1 parent 0fe8364 commit 582d9ef

File tree

1 file changed

+42
-12
lines changed

1 file changed

+42
-12
lines changed

get_dojo_list.rb

+42-12
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,54 @@
1010
#
1111
# 詳細: https://github.com/coderdojo-japan/coderdojo.jp/pull/1433
1212

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
1617

1718
# CoderDojo の名前を使って、Dojo 一覧からデータを検索
18-
dojo_name =''
19+
result = "<ul>\n"
20+
dojo_name = ''
21+
dojo_list = []
1922
not_found = []
20-
TEXT.each do |line|
23+
INPUT_TEXT.each do |line|
2124
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
2751
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"
2956
puts result
3057

58+
59+
3160
# 検索して見つからなかった Dojo 一覧があれば出力
32-
puts '---' if not_found.nil?
61+
puts '--- NOTE ---'
62+
puts "道場数: #{dojo_list.count}"
3363
not_found.each {|dojo_name| puts "Not found: #{dojo_name}" }

0 commit comments

Comments
 (0)