Module: Calltally::Formatter
- Defined in:
- lib/calltally/formatter.rb
Class Method Summary collapse
- .print_csv(mode:, data:, io: $stdout) ⇒ Object
- .print_json(mode:, data:, io: $stdout) ⇒ Object
- .print_table(mode:, data:, io: $stdout) ⇒ Object
Class Method Details
.print_csv(mode:, data:, io: $stdout) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/calltally/formatter.rb', line 47 def print_csv(mode:, data:, io: $stdout) case mode when :pairs io.puts CSV.generate_line(%w[receiver method count]) data.each { |receiver, method, count| io.puts CSV.generate_line([receiver, method, count]) } when :methods io.puts CSV.generate_line(%w[method count]) data.each { |method, count| io.puts CSV.generate_line([method, count]) } when :receivers io.puts CSV.generate_line(%w[receiver count]) data.each { |receiver, count| io.puts CSV.generate_line([receiver, count]) } end end |
.print_json(mode:, data:, io: $stdout) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/calltally/formatter.rb', line 33 def print_json(mode:, data:, io: $stdout) payload = case mode when :pairs { mode: "pairs", rows: data.map { |receiver, method, count| { receiver:, method:, count: } } } when :methods { mode: "methods", rows: data.map { |method, count| { method:, count: } } } when :receivers { mode: "receivers", rows: data.map { |receiver, count| { receiver:, count: } } } end io.puts JSON.pretty_generate(payload) end |
.print_table(mode:, data:, io: $stdout) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/calltally/formatter.rb', line 14 def print_table(mode:, data:, io: $stdout) case mode when :pairs name_w = (data.map { |receiver, method, _| "#{receiver}.#{method}".length }.max || 0) count_w = (data.map { |_, _, count| count.to_s.length }.max || 1) data.each { |receiver, method, count| io.puts "#{count.to_s.rjust(count_w)} #{(receiver + "." + method).ljust(name_w)}" } when :methods, :receivers name_w = (data.map { |name, _| name.to_s.length }.max || 0) count_w = (data.map { |_, count| count.to_s.length }.max || 1) data.each { |name, count| io.puts "#{count.to_s.rjust(count_w)} #{name.to_s.ljust(name_w)}" } end end |