class Report::Summary

Attributes

current_end[RW]
current_start[RW]
previous_end[RW]
previous_start[RW]

Public Class Methods

new(current_start, current_end, previous_start, previous_end) click to toggle source
# File lib/pagerduty_tools/report.rb, line 45
def initialize(current_start, current_end, previous_start, previous_end)
  @current_start  = current_start
  @current_end    = current_end
  @previous_start = previous_start
  @previous_end   = previous_end
  @items          = []
end

Public Instance Methods

<<(item) click to toggle source
# File lib/pagerduty_tools/report.rb, line 53
def <<(item)
  @items << item
end
current_count(&selector) click to toggle source
# File lib/pagerduty_tools/report.rb, line 65
def current_count(&selector)
  count_from(current_items, &selector)
end
current_items() click to toggle source
# File lib/pagerduty_tools/report.rb, line 57
def current_items
  select_between?(current_start, current_end)
end
current_summary(&selector) click to toggle source
# File lib/pagerduty_tools/report.rb, line 73
def current_summary(&selector)
  summarize(current_items, &selector)
end
pct_change(&selector) click to toggle source
# File lib/pagerduty_tools/report.rb, line 81
def pct_change(&selector)
  old_value = previous_count(&selector)
  new_value = current_count(&selector)
  Report.pct_change old_value, new_value
end
previous_count(&selector) click to toggle source
# File lib/pagerduty_tools/report.rb, line 69
def previous_count(&selector)
  count_from(previous_items, &selector)
end
previous_items() click to toggle source
# File lib/pagerduty_tools/report.rb, line 61
def previous_items
  select_between?(previous_start, previous_end)
end
previous_summary(&selector) click to toggle source
# File lib/pagerduty_tools/report.rb, line 77
def previous_summary(&selector)
  summarize(previous_items, &selector)
end

Private Instance Methods

count_from(collection) { |item| ... } click to toggle source
# File lib/pagerduty_tools/report.rb, line 99
def count_from(collection)
  if block_given?
    return collection.count {|item| yield item }
  else
    return collection.count
  end
end
select_between?(a, b) click to toggle source
# File lib/pagerduty_tools/report.rb, line 107
def select_between?(a, b)
  @items.select {|item| item.between?(a, b) }
end
summarize(collection) { |item, summary| ... } click to toggle source
# File lib/pagerduty_tools/report.rb, line 89
def summarize(collection)
  summary = Hash.new(0)

  collection.each do |item|
    yield item, summary
  end

  return summary.sort {|a, b| b[1] <=> a[1] }
end