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