class Configurations::Maps::Blocks
Public Class Methods
new(reader = Readers::Tolerant.new)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 17 def initialize(reader = Readers::Tolerant.new) @map = {} @reader = reader @default = nil end
Public Instance Methods
add(block, properties)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 27 def add(block, properties) properties.each do |property| add_entry(property, block, @map) end end
add_default(block)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 23 def add_default(block) @default = Entry.new(block) end
add_entry(property, block, subtree)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 45 def add_entry(property, block, subtree) if property.is_a?(Hash) property.each do |key, val| subtree[key] = add_entry(val, block, subtree.fetch(key, {})) end elsif property.is_a?(Array) property.each do |val| add_entry(val, block, subtree) end else subtree[property] = Entry.new(block) end subtree end
entries_at(path)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 33 def entries_at(path) entries = @reader.read(@map, path) || {} entries.dup.keep_if { |_, v| v.is_a?(Entry) } end
evaluate!(path, value)
click to toggle source
# File lib/configurations/maps/blocks.rb, line 38 def evaluate!(path, value) entry = @reader.read(@map, path) || @default return unless entry entry.evaluate!(value) end