Class: ModelExtensions::Order::NonNilHash
- Inherits:
-
Object
- Object
- ModelExtensions::Order::NonNilHash
- Defined in:
- app/api/model_extensions/order.rb
Overview
rubocop:enable Metrics/MethodLength
Instance Method Summary collapse
- #[](*keys) ⇒ Object
- #[]=(*keys_and_values) ⇒ Object
- #deep_merge(hash) ⇒ Object
- #fetch(*keys_and_default) ⇒ Object
-
#initialize(key_style_operation = :symbolize_keys) ⇒ NonNilHash
constructor
A new instance of NonNilHash.
- #to_hash ⇒ Object
Constructor Details
#initialize(key_style_operation = :symbolize_keys) ⇒ NonNilHash
Returns a new instance of NonNilHash.
96 97 98 99 |
# File 'app/api/model_extensions/order.rb', line 96 def initialize(key_style_operation = :symbolize_keys) @key_style_operation = key_style_operation @store = ActiveSupport::HashWithIndifferentAccess.new end |
Instance Method Details
#[](*keys) ⇒ Object
106 107 108 |
# File 'app/api/model_extensions/order.rb', line 106 def [](*keys) node_and_leaf(*keys) { |node, leaf| node.fetch(leaf, nil) } end |
#[]=(*keys_and_values) ⇒ Object
110 111 112 113 114 115 |
# File 'app/api/model_extensions/order.rb', line 110 def []=(*keys_and_values) value = keys_and_values.pop return if value.nil? node_and_leaf(*keys_and_values) { |node, leaf| node[leaf] = value } end |
#deep_merge(hash) ⇒ Object
101 102 103 104 |
# File 'app/api/model_extensions/order.rb', line 101 def deep_merge(hash) @store.deep_merge!(hash.try(@key_style_operation) || {}) self end |
#fetch(*keys_and_default) ⇒ Object
117 118 119 120 |
# File 'app/api/model_extensions/order.rb', line 117 def fetch(*keys_and_default) default = keys_and_default.pop node_and_leaf(*keys_and_default) { |node, left| node.fetch(left, default) } end |
#to_hash ⇒ Object
122 123 124 |
# File 'app/api/model_extensions/order.rb', line 122 def to_hash Hash.new.deep_merge(@store) end |