module Qonfig::Settings::Builder

@api private @since 0.2.0

Public Class Methods

build(data_set) { |settings, validator| ... } click to toggle source

@param data_set [Qonfig::DataSet] @param assignements [Block] @yield [settings, validator] @yieldparam settings [Qonfig::DataSet::Settings] @yieldparam validator [Qonfig::Validation::Validators::Composite] @return [void]

@api private @since 0.21.0

# File lib/qonfig/settings/builder.rb, line 16
def build(data_set, &assignements)
  validator = build_validator(data_set)
  settings = build_definitions(data_set)
  yield(settings, validator)
  validator.validate!
  build_state(data_set)
end
build_definitions(data_set) click to toggle source

@param data_set [Qonfig::DataSet] @return [Qonfig::Settings]

@api private @since 0.19.0

# File lib/qonfig/settings/builder.rb, line 29
def build_definitions(data_set)
  Qonfig::Settings.new(build_mutation_callbacks(data_set)).tap do |settings|
    data_set.class.definition_commands.dup.each do |command|
      command.call(data_set, settings)
    end
  end
end
build_state(data_set) click to toggle source

@param data_set [Qonfig::DataSet] @return [void]

@api private @since 0.19.0

# File lib/qonfig/settings/builder.rb, line 42
def build_state(data_set)
  data_set.class.instance_commands.dup.each do |command|
    command.call(data_set, data_set.settings)
  end
end

Private Class Methods

build_mutation_callbacks(data_set) click to toggle source

@param data_set [Qonfig::DataSet] @return [Qonfig::Settings::Callbacks]

@api private @since 0.13.0

# File lib/qonfig/settings/builder.rb, line 64
def build_mutation_callbacks(data_set)
  Qonfig::Settings::Callbacks.new.tap do |callbacks|
    callbacks.add(Qonfig::Settings::Callbacks::Validation.new(data_set))
  end
end
build_validator(data_set) click to toggle source

@param data_set [Qonfig::DataSet] @return [Qonfig::Validation::Validators::Composite]

@api private @since 0.21.0

# File lib/qonfig/settings/builder.rb, line 55
def build_validator(data_set)
  Qonfig::Validation::Validators::Composite.new(data_set)
end