lib/grape/util/base_inheritable.rb
# frozen_string_literal: true module Grape module Util # Base for classes which need to operate with own values kept # in the hash and inherited values kept in a Hash-like object. class BaseInheritable attr_accessor :inherited_values, :new_values # @param inherited_values [Object] An object implementing an interface # of the Hash class. def initialize(inherited_values = nil) @inherited_values = inherited_values || {} @new_values = {} end def delete(key) new_values.delete key end def initialize_copy(other) super self.inherited_values = other.inherited_values self.new_values = other.new_values.dup end def keys if new_values.any? combined = inherited_values.keys combined.concat(new_values.keys) combined.uniq! combined else inherited_values.keys end end def key?(name) inherited_values.key?(name) || new_values.key?(name) end end end end