class StatusManager::StatusStore

Attributes

attribute_name[RW]
group_statuses[RW]
status_sets[RW]

Public Class Methods

new(attribute_name, status_sets = nil) click to toggle source
# File lib/status-manager/status_store.rb, line 21
def initialize(attribute_name, status_sets = nil)
  @attribute_name = attribute_name
  @status_sets = status_sets || {}
  @group_statuses = {}
end

Public Instance Methods

add_group_status(group_status_name, statuses) click to toggle source
# File lib/status-manager/status_store.rb, line 43
def add_group_status(group_status_name, statuses)
  @group_statuses.merge!(group_status_name => statuses)
end
get_group_status(group_status_name) click to toggle source
# File lib/status-manager/status_store.rb, line 47
def get_group_status(group_status_name)
  statuses = {}
  @group_statuses[group_status_name].each do |status|
    statuses[status] = value(status)
  end
  statuses
end
group_status?(group_status) click to toggle source
# File lib/status-manager/status_store.rb, line 39
def group_status?(group_status)
  @group_statuses.key?(group_status)
end
status?(status) click to toggle source
# File lib/status-manager/status_store.rb, line 31
def status?(status)
  @status_sets.key?(status)
end
statuses() click to toggle source
# File lib/status-manager/status_store.rb, line 27
def statuses
  @status_sets.keys
end
value(status) click to toggle source
# File lib/status-manager/status_store.rb, line 35
def value(status)
  @status_sets[status]
end
values(statuses = []) click to toggle source
# File lib/status-manager/status_store.rb, line 55
def values(statuses = [])
  if statuses.nil?
    return @statuse_sets.values
  elsif status? statuses
    return [value(statuses)]
  elsif group_status? statuses
    return get_group_status(statuses).values
  elsif statuses.instance_of?(Array)
    results = []
    statuses.each do |_status|
      if status?(_status)
        results << value(_status)
      elsif group_status?(_status)
        results |= get_group_status(_status).values
      end
    end
    return results.uniq
  else
    return []
  end
end