From 16e5867588a22c63c66d9563dfb564d0776ee598 Mon Sep 17 00:00:00 2001 From: Rikuoh Date: Mon, 29 Jul 2024 22:05:22 +0900 Subject: [PATCH] =?UTF-8?q?=E3=81=95=E3=82=89=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wc.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wc.rb b/wc.rb index 37f1768..52b007f 100644 --- a/wc.rb +++ b/wc.rb @@ -6,7 +6,7 @@ def main options, filenames = parse_options file_stats = collect_file_stats(filenames) total_stats = calculate_total_stats(file_stats) - max_widths = calculate_max_widths(file_stats + [total_stats]) + max_widths = calculate_max_widths(total_stats) print_file_stats(file_stats, max_widths, options) print_file_stats([total_stats], max_widths, options) if filenames.size > 1 end @@ -26,12 +26,12 @@ end def collect_file_stats(filenames) filenames.map do |filename| input = filename.empty? ? ARGF.read : File.read(filename) - { filename: filename, lines: input.lines.count, words: input.split.size, bytes: input.bytesize } + { filenames: filename, lines: input.lines.count, words: input.split.size, bytes: input.bytesize } end end def calculate_total_stats(file_stats) - total_stats = { filename: '合計', lines: 0, words: 0, bytes: 0 } + total_stats = { filenames: '合計', lines: 0, words: 0, bytes: 0 } file_stats.each do |stats| total_stats[:lines] += stats[:lines] total_stats[:words] += stats[:words] @@ -40,9 +40,9 @@ def calculate_total_stats(file_stats) total_stats end -def calculate_max_widths(all_stats) +def calculate_max_widths(total_stats) %i[lines words bytes].each_with_object({}) do |key, max_widths| - max_widths[key] = all_stats.map { |stats| stats[key].to_s.length }.max + max_widths[key] = total_stats[key].to_s.length end end @@ -55,7 +55,7 @@ end def print_file_stats(file_stats, max_widths, options) file_stats.each do |stats| result = format_result(stats, max_widths, options) - puts "#{result} #{stats[:filename]}" + puts [result, stats[:filenames]].join(' ') end end