def print()
total_number_of_articles = 0
total_number_of_pages = 0
total_number_of_edits = 0
total_number_of_administrators = 0
total_number_of_users = 0
total_number_of_active_users = 0
total_number_of_files = 0
number_of_languages = @language_entries.values.size
sorted_language_entries = @language_entries.values.sort.reverse
file = File.new(@file_name, 'w')
date_time_format = DateTimeFormat.new
date_time_format.set_date_time(@as_of)
file.puts @resource.page_header.
sub('${year}', date_time_format.year).
sub('${month}', date_time_format.month.to_i.to_s).
sub('${day}', date_time_format.day.to_i.to_s).
sub('${hour}', date_time_format.hour).
sub('${minute}', date_time_format.minute).
sub('${number.of.languages}', number_of_languages.to_s)
table_infos = @resource.table_Infos.clone()
number_format = NumberFormat.new
rank = 0
previous_number_of_articles = 0
same_rank = 0
is_printing = false
error_messages = Array.new
sorted_language_entries.each do |language_entry|
table_infos.each do |table_info|
if language_entry.number_of_articles.to_i >= table_info.or_more then
if table_info.header_is_not_printed then
if is_printing then
file.puts '|}'
file.puts
else
is_printing = true
end
file.puts table_info.label
file.puts @resource.table_header.rstrip
table_info.header_is_not_printed = false
end
break
end
end
if @resource.languages.has_key?(language_entry.code) then
language_of_resource = @resource.languages.fetch(language_entry.code)
language_entry.description = language_of_resource.description
language_entry.article_of_wiki = language_of_resource.article_of_wiki
language_entry.english_description = language_of_resource.english_description
language_entry.score = language_of_resource.score
else
language_entry.description = ''
language_entry.article_of_wiki = nil
language_entry.english_description = ''
language_entry.score = ''
end
if rank == 0 then
rank += 1
same_rank = 1
elsif language_entry.number_of_articles.to_i < previous_number_of_articles.to_i then
rank += same_rank
same_rank = 1
else
same_rank += 1
end
previous_number_of_articles = language_entry.number_of_articles.to_i
file.puts '|-'
file.puts '| ' + @resource.table_column_attributes[0] + rank.to_s
description_text = language_entry.description
if language_entry.article_of_wiki != nil then
description_text += ' - [[' + language_entry.article_of_wiki +
'|' + @resource.caption_of_article_of_wiki + ']]'
end
file.puts '| ' + @resource.table_column_attributes[1] + description_text
file.puts '| ' + @resource.table_column_attributes[2] + language_entry.english_description
if language_entry.code.eql?(@config.target_language) then
wiki_main_page_link = @resource.target_wiki_main_page
else
wiki_main_page_link = ':' + language_entry.code + ':'
end
file.puts '| ' + @resource.table_column_attributes[3] +
'[[' + wiki_main_page_link + '|' + language_entry.code + ']]'
file.puts '| ' + @resource.table_column_attributes[4] +
'[{{fullurl:' + language_entry.code + ':Special:Statistics|uselang=' + @config.target_language + '}} \'\'\'' +
number_format.format(language_entry.number_of_articles) +'\'\'\']'
file.puts '| ' + @resource.table_column_attributes[5] +
number_format.format(language_entry.number_of_pages)
file.puts '| ' + @resource.table_column_attributes[6] +
'[[:' + language_entry.code + ':Special:Statistics|' +
number_format.format(language_entry.number_of_edits) + ']]'
file.puts '| ' + @resource.table_column_attributes[7] +
'[[:' + language_entry.code + ':Special:Listadmins|' +
number_format.format(language_entry.number_of_administrators) + ']]'
file.puts '| ' + @resource.table_column_attributes[8] +
'[[:' + language_entry.code + ':Special:Listusers|' +
number_format.format(language_entry.number_of_users) + ']]'
file.puts '| ' + @resource.table_column_attributes[9] +
'[[:' + language_entry.code + ':Special:Statistics|' +
number_format.format(language_entry.number_of_active_users) + ']]'
file.puts '| ' + @resource.table_column_attributes[10] +
'[[:' + language_entry.code + ':Special:ListFiles|' +
number_format.format(language_entry.number_of_files) + ']]'
file.puts '| ' + @resource.table_column_attributes[11] +
(language_entry.number_of_articles.to_i >=
LanguageEntry.minimum_number_of_articles_for_calculating_depth ?
language_entry.depth.to_s : ' - ')
file.puts '| ' + @resource.table_column_attributes[12] + language_entry.score
total_number_of_articles +=
total_integer_value(language_entry.number_of_articles,
'純記事数', language_entry, error_messages)
total_number_of_pages +=
total_integer_value(language_entry.number_of_pages,
'総項目数', language_entry, error_messages)
total_number_of_edits +=
total_integer_value(language_entry.number_of_edits,
'編集数', language_entry, error_messages)
total_number_of_administrators +=
total_integer_value(language_entry.number_of_administrators,
'管理者数', language_entry, error_messages)
total_number_of_users +=
total_integer_value(language_entry.number_of_users,
'登録者数', language_entry, error_messages)
total_number_of_active_users +=
total_integer_value(language_entry.number_of_active_users,
'活動中の登録者数', language_entry, error_messages)
total_number_of_files +=
total_integer_value(language_entry.number_of_files,
'ファイル数', language_entry, error_messages)
end
file.puts '|}'
file.puts
file.puts @resource.summary_table_header
file.puts '|-'
file.puts '| \'\'\'' + number_of_languages.to_s + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_articles) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_pages) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_edits) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_administrators) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_users) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_active_users) + '\'\'\''
file.puts '| \'\'\'' + number_format.format(total_number_of_files) + '\'\'\''
file.puts '|}'
if error_messages.size > 0 then
file.puts
message = '一部のウィキペディアの統計情報で、マイナスの値が返されてきたものが'
file.puts '(注記) ' + message + 'あった。'
@logger.log(message + 'ありました。')
message = '詳細は次のとおり。'
file.puts message
@logger.log(message)
error_messages.each do |error_message|
message = '* ' + error_message
file.puts message
@logger.log(message)
end
end
file.puts @resource.footer
file.puts @inter_language_links.to_s
file.flush
file.close
@logger.log('更新用統計ページのウィキテキストを作成して、' + @file_name + ' に出力しました。')
end