class SvgDrawer::Utils::ParameterMerger

Constants

ParameterNotFound

Public Class Methods

new(*sources) click to toggle source
# File lib/svg_drawer/utils/parameter_merger.rb, line 6
def initialize(*sources)
  @sources = sources
end

Public Instance Methods

param(name) click to toggle source

At least one of the sources must contain some value for the param (even a nil value)

# File lib/svg_drawer/utils/parameter_merger.rb, line 12
def param(name)
  source = @sources.find { |s| s.key?(name) }
  raise ParameterNotFound, "No such param: #{name}" unless source
  val = source[name]

  val.is_a?(Hash) ? default_hash(name, val) : val
end
param?(name) click to toggle source
# File lib/svg_drawer/utils/parameter_merger.rb, line 20
def param?(name)
  !!param(name)
rescue ParameterNotFound
  false
end

Private Instance Methods

default_hash(name, value) click to toggle source

When the value is the hash, populate its missing keys (if any) with default values

# File lib/svg_drawer/utils/parameter_merger.rb, line 30
def default_hash(name, value)
  @sources.reduce(value) do |hash, source|
    source[name] ? source[name].merge(hash) : hash
  end
end