MinGWでw3mビルド (2.1)
寝るって言ったけど。
$ make 2>&1 | ruby parse_make_out.rb warning error func.c 432 83 funcname.c 340 277 functable.c 1545 5
parse_make_outはこんなん。
marks = ['warning', 'error'] counts = Hash.new{|h, k| h[k] = Hash.new(0) } ARGF.each do |line| if /\A([^:]+?):(\d+):\s*(#{Regexp.union(*marks)}):\s*/o =~ line counts[$1][$3] += 1 end end keys = counts.keys.sort widths = [keys.max_by{|k| k.size }, *marks].map{|x| x.size } def widths.render(*row) row.zip(self).map{|e, w| e.to_s.rjust(w) }.join(" ") end puts widths.render('', *marks) keys.each do |k| row = k, *marks.map{|m| counts[k][m] } puts widths.render(*row) end
さてどうしたもんか。