module RSpec::Core::HashImitatable
Mixin that makes the including class imitate a hash for backwards compatibility. The including class should use ‘attr_accessor` to declare attributes. @private
Public Class Methods
included(klass)
click to toggle source
# File lib/rspec/core/metadata.rb, line 350 def self.included(klass) klass.extend ClassMethods end
Public Instance Methods
[](key)
click to toggle source
# File lib/rspec/core/metadata.rb, line 388 def [](key) issue_deprecation(:[], key) if directly_supports_attribute?(key) get_value(key) else extra_hash_attributes[key] end end
[]=(key, value)
click to toggle source
# File lib/rspec/core/metadata.rb, line 398 def []=(key, value) issue_deprecation(:[]=, key, value) if directly_supports_attribute?(key) set_value(key, value) else extra_hash_attributes[key] = value end end
to_h()
click to toggle source
# File lib/rspec/core/metadata.rb, line 354 def to_h hash = extra_hash_attributes.dup self.class.hash_attribute_names.each do |name| hash[name] = __send__(name) end hash end
Private Instance Methods
directly_supports_attribute?(name)
click to toggle source
# File lib/rspec/core/metadata.rb, line 414 def directly_supports_attribute?(name) self.class.hash_attribute_names.include?(name) end
extra_hash_attributes()
click to toggle source
# File lib/rspec/core/metadata.rb, line 410 def extra_hash_attributes @extra_hash_attributes ||= {} end
get_value(name)
click to toggle source
# File lib/rspec/core/metadata.rb, line 418 def get_value(name) __send__(name) end
hash_for_delegation()
click to toggle source
# File lib/rspec/core/metadata.rb, line 426 def hash_for_delegation to_h end
issue_deprecation(_method_name, *_args)
click to toggle source
# File lib/rspec/core/metadata.rb, line 430 def issue_deprecation(_method_name, *_args) # no-op by default: subclasses can override end
set_value(name, value)
click to toggle source
# File lib/rspec/core/metadata.rb, line 422 def set_value(name, value) __send__(:"#{name}=", value) end