class Dry::Configurable::Compiler

@api private
Setting compiler used internally by the DSL

def call(ast)

def call(ast)
  Settings.new.tap do |settings|
    ast.each do |node|
      settings << visit(node)
    end
  end
end

def visit(node)

Other tags:
    Api: - private
def visit(node)
  type, rest = node
  public_send(:"visit_#{type}", rest)
end

def visit_nested(node)

Other tags:
    Api: - private
def visit_nested(node)
  parent, children = node
  name, opts = parent[1]
  Setting.new(name, **opts, children: Settings.new(call(children)))
end

def visit_setting(node)

Other tags:
    Api: - private
def visit_setting(node)
  name, opts = node
  Setting.new(name, **opts)
end