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