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