Class: Imapcli::Stats

Inherits:
Object
  • Object
show all
Defined in:
lib/imapcli/stats.rb

Overview

Handles mailbox statistics.

message_sizes is an array of message sizes in bytes.

Instance Method Summary collapse

Constructor Details

#initialize(message_sizes = []) ⇒ Stats

Returns a new instance of Stats.



9
10
11
# File 'lib/imapcli/stats.rb', line 9

def initialize(message_sizes = [])
  @message_sizes = message_sizes
end

Instance Method Details

#add(other_stats) ⇒ Object

Adds other statistics.



14
15
16
17
18
19
# File 'lib/imapcli/stats.rb', line 14

def add(other_stats)
  return unless other_stats

  @message_sizes += other_stats.message_sizes
  invalidate
end

#countObject



21
22
23
# File 'lib/imapcli/stats.rb', line 21

def count
  @count ||= @message_sizes&.length
end

#max_sizeObject



45
46
47
# File 'lib/imapcli/stats.rb', line 45

def max_size
  @max_size ||= @message_sizes.max
end

#median_sizeObject



37
38
39
# File 'lib/imapcli/stats.rb', line 37

def median_size
  @median_size ||= @message_sizes.median
end

#min_sizeObject



29
30
31
# File 'lib/imapcli/stats.rb', line 29

def min_size
  @min_size ||= @message_sizes.min
end

#quartile_1_sizeObject



33
34
35
# File 'lib/imapcli/stats.rb', line 33

def quartile_1_size
  @quartile_1_size ||= @message_sizes.percentile(25)
end

#quartile_3_sizeObject



41
42
43
# File 'lib/imapcli/stats.rb', line 41

def quartile_3_size
  @quartile_3_size ||= @message_sizes.percentile(75)
end

#total_sizeObject



25
26
27
# File 'lib/imapcli/stats.rb', line 25

def total_size
  @total_size ||= @message_sizes.sum
end