class Greenenvy::Container::MethodMissingHandler

Public Class Methods

new(hash) click to toggle source
# File lib/greenenvy/container.rb, line 18
def initialize(hash)
  @hash = hash
end

Public Instance Methods

call(name) click to toggle source
# File lib/greenenvy/container.rb, line 22
def call(name)
  processed_name, predicate = process_predicate(name)

  if @hash.key?(processed_name)
    result_with_predicate(processed_name, predicate)
  else
    raise Exceptions::MissingKey, missing_key_message(processed_name)
  end
end
respond?(name) click to toggle source
# File lib/greenenvy/container.rb, line 32
def respond?(name)
  processed_name, _ = process_predicate(name)
  @hash.key?(processed_name)
end

Private Instance Methods

missing_key_message(name) click to toggle source
# File lib/greenenvy/container.rb, line 51
def missing_key_message(name)
  "Unknown key: #{name}. Valid keys: #{@hash.keys.join(", ")}."
end
process_predicate(name) click to toggle source
# File lib/greenenvy/container.rb, line 39
def process_predicate(name)
  if name[-1] == "?"
    [name[0..-2].to_sym, true]
  else
    [name.to_sym, false]
  end
end
result_with_predicate(key, predicate) click to toggle source
# File lib/greenenvy/container.rb, line 47
def result_with_predicate(key, predicate)
  predicate ? !!@hash[key] : @hash[key]
end