class Declarative::Variables
Implements the pattern of maintaining a hash of key/values (usually “defaults”) that are mutated several times by user and library code (override defaults).
The Variables
instance then represents the configuration data to be processed by the using library (e.g. Representable or Trailblazer).
Public Class Methods
Append(appended_array)
click to toggle source
# File lib/declarative/variables.rb, line 32 def self.Append(appended_array) Variables::Proc.new do |original| (original || []) + appended_array end end
Merge(merged_hash)
click to toggle source
# File lib/declarative/variables.rb, line 26 def self.Merge(merged_hash) Variables::Proc.new do |original| (original || {}).merge( merged_hash ) end end
merge(defaults, overrides)
click to toggle source
@return Hash hash where `overrides` is merged onto `defaults` respecting Merge
, Append
etc.
# File lib/declarative/variables.rb, line 12 def self.merge(defaults, overrides) defaults = defaults.merge({}) # todo: use our DeepDup. # TODO: or how could we provide immutability? overrides.each do |k, v| if v.is_a?(Variables::Proc) defaults[k] = v.( defaults[k] ) else defaults[k] = v end end defaults end