class Reportier::Tracker

Attributes

defaults[R]
name[R]
persister[R]
reporter[R]
started_at[RW]
type[R]

Public Class Methods

[](type) click to toggle source
# File lib/reportier/tracker.rb, line 7
def self.[](type)
  @current       ||= Hash.new
  @current[type] ||= new(type: type)
end
new(opts = {}) click to toggle source
# File lib/reportier/tracker.rb, line 12
def initialize(opts = {})
  @type         = opts[:type]
  @name         = Namer.new.name \
    "#{opts[:name]}#{@type && @type.capitalize}Tracker"
  @defaults     = Defaults.global
  @reporter     = opts[:reporter]  || Reporter.get
  @persister    = opts[:persister] || Persister.get(self)
  @persister.set_date(_set_date)
end

Public Instance Methods

active?() click to toggle source
# File lib/reportier/tracker.rb, line 35
def active?
  DateTime.now < expires_at
end
add(item) click to toggle source
# File lib/reportier/tracker.rb, line 22
def add(item)
  (report && clear) unless active?
  return if Defaults.global.trackers[@type] == 0
  @persister.save(Namer.new.name_item(item))
end
report() click to toggle source
# File lib/reportier/tracker.rb, line 28
def report
  @reporter.call(self) do
    "#{@type} report started at #{@started_at}\n" +
    @persister.report
  end
end
to_hash() click to toggle source
# File lib/reportier/tracker.rb, line 43
def to_hash
  @persister.to_hash
end
to_json() click to toggle source
# File lib/reportier/tracker.rb, line 39
def to_json
  @persister.to_json
end

Private Instance Methods

_long_due?() click to toggle source
# File lib/reportier/tracker.rb, line 73
def _long_due?
  expires_at < (DateTime.now - Defaults.global.trackers[@type])
end
_set_date() click to toggle source
# File lib/reportier/tracker.rb, line 64
def _set_date
  return DateTime.now if _set_to_now?
  active? ? get_date : expires_at
end
_set_to_now?() click to toggle source
# File lib/reportier/tracker.rb, line 69
def _set_to_now?
  get_date.nil? || _long_due?
end
clear() click to toggle source
# File lib/reportier/tracker.rb, line 49
def clear
  @persister.clear
  @persister.set_date(_set_date)
end
expires_at() click to toggle source
# File lib/reportier/tracker.rb, line 54
def expires_at
  get_date + Defaults.global.trackers[@type]
end
get_date() click to toggle source
# File lib/reportier/tracker.rb, line 58
def get_date
  @persister.get_date
end