module Refinements::Struct
Provides additional enhancements to the Struct
primitive.
Public Instance Methods
merge(...)
click to toggle source
# File lib/refinements/struct.rb, line 20 def merge(...) = dup.merge!(...) def merge! object = nil to_h.merge!(**object.to_h).each { |key, value| self[key] = value } self end def revalue attributes = each_pair return self unless block_given? dup.tap { |copy| attributes.each { |key, value| copy[key] = yield self[key], value } } end def revalue! attributes = each_pair return self unless block_given? attributes.each { |key, value| self[key] = yield self[key], value } self end def transmute(...) = dup.transmute!(...) def transmute! object, **key_map mapping = key_map.invert merge! object.to_h.slice(*mapping.keys).transform_keys!(mapping) end alias_method :with, :merge end end
merge!(object = nil)
click to toggle source
# File lib/refinements/struct.rb, line 22 def merge! object = nil to_h.merge!(**object.to_h).each { |key, value| self[key] = value } self end
revalue(attributes = each_pair) { |self, value| ... }
click to toggle source
# File lib/refinements/struct.rb, line 27 def revalue attributes = each_pair return self unless block_given? dup.tap { |copy| attributes.each { |key, value| copy[key] = yield self[key], value } } end
revalue!(attributes = each_pair) { |self, value| ... }
click to toggle source
# File lib/refinements/struct.rb, line 33 def revalue! attributes = each_pair return self unless block_given? attributes.each { |key, value| self[key] = yield self[key], value } self end
transmute(...)
click to toggle source
# File lib/refinements/struct.rb, line 40 def transmute(...) = dup.transmute!(...) def transmute! object, **key_map mapping = key_map.invert merge! object.to_h.slice(*mapping.keys).transform_keys!(mapping) end alias_method :with, :merge end
transmute!(object, **key_map)
click to toggle source
# File lib/refinements/struct.rb, line 42 def transmute! object, **key_map mapping = key_map.invert merge! object.to_h.slice(*mapping.keys).transform_keys!(mapping) end
with_positions(*values)
click to toggle source
# File lib/refinements/struct.rb, line 9 def with_positions(*values) warn "`#{self.class}##{__method__}` is deprecated and will be removed in Version 13.0.0.", category: :deprecated keyword_init? ? new(**members.zip(values).to_h) : new(*values) end