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