Class: Derrick::CLI::AggregateFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/derrick/cli.rb

Instance Method Summary collapse

Constructor Details

#initialize(aggregate) ⇒ AggregateFormatter

Returns a new instance of AggregateFormatter.



54
55
56
# File 'lib/derrick/cli.rb', line 54

def initialize(aggregate)
  @aggregate = Hash[aggregate.sort_by { |p, a| -a.count }]
end

Instance Method Details

#each {|render_header| ... } ⇒ Object

Yields:



58
59
60
61
# File 'lib/derrick/cli.rb', line 58

def each
  yield render_header
  @aggregate.each { |n, s| yield render_line(n, s) }
end

#key_sizeObject



91
92
93
# File 'lib/derrick/cli.rb', line 91

def key_size
  @key_size ||= @aggregate.keys.map(&:size).max
end

#render_headerObject



63
64
65
66
67
68
69
70
# File 'lib/derrick/cli.rb', line 63

def render_header
  [
    'Pattern'.ljust(key_size),
    'Count'.rjust(6),
    'Exp'.rjust(4),
    'Type',
  ].join(' ')
end

#render_line(name, stats) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/derrick/cli.rb', line 72

def render_line(name, stats)
  [
    name.ljust(key_size),
    stats.count.to_s.rjust(6),
    "#{(stats.expirable_ratio * 100).round}%".rjust(4),
    types_summary(stats)
  ].join(' ')
end

#types_summary(stats) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/derrick/cli.rb', line 81

def types_summary(stats)
  if stats.types_count.size == 1
    stats.types_count.keys.first
  else
    stats.types_ratio.map do |type, ratio|
      "#{type}: #{(ratio * 100).round}%"
    end.join(',')
  end
end