class OFFS::Flags

Attributes

value_sources[RW]

Public Class Methods

instance(*args) click to toggle source
# File lib/offs/flags.rb, line 9
def instance(*args)
  unless @instance.nil? || args.empty?
    raise AlreadyInitializedError
  end
  @instance ||= new(*args)
end
new(*flags, value_sources: {}) click to toggle source
# File lib/offs/flags.rb, line 21
def initialize(*flags, value_sources: {})
  self.value_sources = array_wrap(value_sources)
  __setobj__(flags)
end
reset_instance!() click to toggle source
# File lib/offs/flags.rb, line 16
def reset_instance!
  @instance = nil
end

Public Instance Methods

enabled?(flag) click to toggle source
# File lib/offs/flags.rb, line 31
def enabled?(flag)
  validate!(flag)
  !!final_values[flag]
end
validate!(flag) click to toggle source
# File lib/offs/flags.rb, line 26
def validate!(flag)
  return true if include?(flag)
  raise UndefinedFlagError, "The #{flag} flag has not been defined."
end

Private Instance Methods

array_wrap(obj) click to toggle source
# File lib/offs/flags.rb, line 40
def array_wrap(obj)
  return [obj] unless obj.kind_of?(Array)
  obj
end
final_values() click to toggle source
# File lib/offs/flags.rb, line 45
def final_values
  value_sources.reverse.reduce({}) { |final, source|
    final.merge(sanitize(source))
  }
end
sanitize(data_hash) click to toggle source
# File lib/offs/flags.rb, line 51
def sanitize(data_hash)
  data_hash.reduce({}) { |result, k_v_pair|
    k_v_pair = k_v_pair.to_a
    key = k_v_pair.first.to_s.downcase.to_sym
    value = [true, 'true', 1, '1', 'on'].include?(k_v_pair.last)
    result[key] = value
    result
  }
end