module Qonfig::DSL

@api private @since 0.1.0 @version 0.20.0

@api private @since 0.12.0

@api private @since 0.25.0

Public Class Methods

extended(child_klass) click to toggle source

@param child_klass [Class<Qonfig::DataSet>] @return [void]

@see Qonfig::DataSet::ClassBuilder

@api private @since 0.1.0 @version 0.20.0 rubocop:disable Layout/LineLength, Metrics/AbcSize

# File lib/qonfig/dsl.rb, line 19
def extended(child_klass)
  child_klass.instance_variable_set(:@definition_commands, Qonfig::CommandSet.new)
  child_klass.instance_variable_set(:@instance_commands, Qonfig::CommandSet.new)
  child_klass.instance_variable_set(:@predefined_validators, Qonfig::Validation::Collections::PredefinedRegistry.new)
  child_klass.instance_variable_set(:@validators, Qonfig::Validation::Collections::InstanceCollection.new)

  child_klass.singleton_class.prepend(Module.new do
    def inherited(child_klass)
      child_klass.instance_variable_set(:@definition_commands, Qonfig::CommandSet.new)
      child_klass.instance_variable_set(:@instance_commands, Qonfig::CommandSet.new)
      child_klass.instance_variable_set(:@predefined_validators, Qonfig::Validation::Collections::PredefinedRegistry.new)
      child_klass.instance_variable_set(:@validators, Qonfig::Validation::Collections::InstanceCollection.new)
      Qonfig::DSL::Inheritance.inherit(base: self, child: child_klass)
      super
    end
  end)
end
inherited(child_klass) click to toggle source
Calls superclass method
# File lib/qonfig/dsl.rb, line 26
def inherited(child_klass)
  child_klass.instance_variable_set(:@definition_commands, Qonfig::CommandSet.new)
  child_klass.instance_variable_set(:@instance_commands, Qonfig::CommandSet.new)
  child_klass.instance_variable_set(:@predefined_validators, Qonfig::Validation::Collections::PredefinedRegistry.new)
  child_klass.instance_variable_set(:@validators, Qonfig::Validation::Collections::InstanceCollection.new)
  Qonfig::DSL::Inheritance.inherit(base: self, child: child_klass)
  super
end

Public Instance Methods

compose(data_set_klass) click to toggle source

@param data_set_klass [Class<Qonfig::DataSet>] @return [void]

@see Qonfig::Comamnds::Definition::Compose

@api private @sine 0.1.0

# File lib/qonfig/dsl.rb, line 153
def compose(data_set_klass)
  definition_commands << Qonfig::Commands::Definition::Compose.new(data_set_klass)
end
define_validator(name, &validation_logic) click to toggle source

@param name [String, Symbol] @param validation_logic [Block] @return [void]

@see Qonfig::Validation::Building::PredefinedBuilder

@api public @since 0.20.0

# File lib/qonfig/dsl.rb, line 107
def define_validator(name, &validation_logic)
  Qonfig::Validation::Building::PredefinedBuilder.build(
    name, validation_logic, predefined_validators
  )
end
definition_commands() click to toggle source

@return [Qonfig::CommandSet]

@api private @since 0.17.0

# File lib/qonfig/dsl.rb, line 43
def definition_commands
  @definition_commands
end
expose_json(file_path, strict: true, via:, env:) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @option via [Symbol] @option env [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::ExposeJSON

@api public @since 0.14.0

# File lib/qonfig/dsl.rb, line 241
def expose_json(file_path, strict: true, via:, env:)
  definition_commands << Qonfig::Commands::Definition::ExposeJSON.new(
    file_path, strict: strict, via: via, env: env
  )
end
expose_self(env:, format: :dynamic) click to toggle source

@option env [Symbol, String] @option format [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::ExposeSelf

@api public @since 0.14.0 @version 0.21.0

# File lib/qonfig/dsl.rb, line 256
def expose_self(env:, format: :dynamic)
  caller_location = ::Kernel.caller(1, 1).first

  definition_commands << Qonfig::Commands::Definition::ExposeSelf.new(
    caller_location, env: env, format: format
  )
end
expose_toml(file_path, strict: true, via:, env:) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @option via [Symbol] @option env [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::ExposeTOML

@api public @since 0.12.0 @version 0.20.0

# File lib/qonfig/plugins/toml/dsl.rb, line 32
def expose_toml(file_path, strict: true, via:, env:)
  definition_commands << Qonfig::Commands::Definition::ExposeTOML.new(
    file_path, strict: strict, via: via, env: env
  )
end
expose_vault(path, strict: true, via:, env:) click to toggle source

@param path [String, Pathname] @option strict [Boolean] @option via [Symbol] @option env [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::ExposeVault

@api public @since 0.25.0

# File lib/qonfig/plugins/vault/dsl.rb, line 30
def expose_vault(path, strict: true, via:, env:)
  definition_commands << Qonfig::Commands::Definition::ExposeVault.new(
    path, strict: strict, via: via, env: env
  )
end
expose_yaml(file_path, strict: true, via:, env:) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @option via [Symbol] @option env [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::ExposeYAML

@api public @since 0.7.0

# File lib/qonfig/dsl.rb, line 225
def expose_yaml(file_path, strict: true, via:, env:)
  definition_commands << Qonfig::Commands::Definition::ExposeYAML.new(
    file_path, strict: strict, via: via, env: env
  )
end
freeze_state!() click to toggle source

@return [void]

@see Qonfig::Commands::Instantiation::FreezeState

@api public @since 0.19.0

# File lib/qonfig/dsl.rb, line 288
def freeze_state!
  instance_commands << Qonfig::Commands::Instantiation::FreezeState.new
end
instance_commands() click to toggle source

@return [Qonfig::CommandSet]

@api private @since 0.17.0

# File lib/qonfig/dsl.rb, line 51
def instance_commands
  @instance_commands
end
load_from_env(convert_values: false, prefix: nil, trim_prefix: false) click to toggle source

@option convert_values [Boolean] @option prefix [NilClass, String, Regexp] @return [void]

@see Qonfig::Commands::Definition::LoadFromENV

@api public @since 0.2.0

# File lib/qonfig/dsl.rb, line 195
def load_from_env(convert_values: false, prefix: nil, trim_prefix: false)
  definition_commands << Qonfig::Commands::Definition::LoadFromENV.new(
    convert_values: convert_values,
    prefix: prefix,
    trim_prefix: trim_prefix
  )
end
load_from_json(file_path, strict: true) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @return [void]

@see Qonfig::Commands::Definition::LoadFromJSON

@api public @since 0.5.0

# File lib/qonfig/dsl.rb, line 211
def load_from_json(file_path, strict: true)
  definition_commands << Qonfig::Commands::Definition::LoadFromJSON.new(file_path, strict: strict)
end
load_from_self(format: :dynamic) click to toggle source

@option format [Symbol, String] @return [void]

@see Qonfig::Commands::Definition::LoadFromSelf

@api public @since 0.2.0 @version 0.21.0

# File lib/qonfig/dsl.rb, line 179
def load_from_self(format: :dynamic)
  caller_location = ::Kernel.caller(1, 1).first

  definition_commands << Qonfig::Commands::Definition::LoadFromSelf.new(
    caller_location, format: format
  )
end
load_from_toml(file_path, strict: true) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @return [void]

@see Qonfig::Commands::Definition::LoadFromTOML

@api public @since 0.12.0 @version 0.20.0

# File lib/qonfig/plugins/toml/dsl.rb, line 15
def load_from_toml(file_path, strict: true)
  definition_commands << Qonfig::Commands::Definition::LoadFromTOML.new(
    file_path, strict: strict
  )
end
load_from_vault(path, strict: true) click to toggle source

@param path [String, Pathname] @option strict [Boolean] @return [void]

@see Qonfig::Commands::Definition::LoadFromVault

@api public @since 0.25.0

# File lib/qonfig/plugins/vault/dsl.rb, line 14
def load_from_vault(path, strict: true)
  definition_commands << Qonfig::Commands::Definition::LoadFromVault.new(
    path, strict: strict
  )
end
load_from_yaml(file_path, strict: true) click to toggle source

@param file_path [String, Pathname] @option strict [Boolean] @return [void]

@see Qonfig::Commands::Definition::LoadFromYAML

@api public @since 0.2.0

# File lib/qonfig/dsl.rb, line 165
def load_from_yaml(file_path, strict: true)
  definition_commands << Qonfig::Commands::Definition::LoadFromYAML.new(
    file_path, strict: strict
  )
end
predefined_validators() click to toggle source

@return [Qonfig::Validation::Collections::PredefinedRegistry]

@api private @since 0.20.0

# File lib/qonfig/dsl.rb, line 59
def predefined_validators
  @predefined_validators
end
re_setting(key, initial_value = nil, &nested_settings) click to toggle source

@param key [Symbol, String] @param initial_value [Object] @param nested_settings [Proc] @return [void]

@see Qonfig::Comamnds::Definition::ReDefineOption

@api public @since 0.20.0

# File lib/qonfig/dsl.rb, line 140
def re_setting(key, initial_value = nil, &nested_settings)
  definition_commands << Qonfig::Commands::Definition::ReDefineOption.new(
    key, initial_value, nested_settings
  )
end
setting(key, initial_value = nil, &nested_settings) click to toggle source

@param key [Symbol, String] @param initial_value [Object] @param nested_settings [Proc] @return [void]

@see Qonfig::Commands::Definition::AddNestedOption @see Qonfig::Commands::Definition::AddOption

@api public @since 0.1.0

# File lib/qonfig/dsl.rb, line 123
def setting(key, initial_value = nil, &nested_settings)
  if block_given?
    definition_commands << Qonfig::Commands::Definition::AddNestedOption.new(key, nested_settings)
  else
    definition_commands << Qonfig::Commands::Definition::AddOption.new(key, initial_value)
  end
end
validate( setting_key_pattern = nil, predefined = nil, strict: false, by: nil, &custom_validation ) click to toggle source

@param setting_key_pattern [String, Symbol, NilClass] @param predefined [String, Symbol] @option by [String, Symbol, NilClass] @option stict [Boolean] @param custom_validation [Proc] @return [void]

@see Qonfig::Validation::Building::InstanceBuilder

@api public @since 0.20.0

# File lib/qonfig/dsl.rb, line 82
def validate(
  setting_key_pattern = nil,
  predefined = nil,
  strict: false,
  by: nil,
  &custom_validation
)
  validators << Qonfig::Validation::Building::InstanceBuilder.build(
    self,
    setting_key_pattern: setting_key_pattern,
    predefined_validator: predefined,
    runtime_validation_method: by,
    strict: strict,
    validation_logic: custom_validation
  )
end
validators() click to toggle source

@return [Qonfig::Validation::Collections::InstanceCollection]

@api private @since 0.20.0

# File lib/qonfig/dsl.rb, line 67
def validators
  @validators
end
values_file(file_path, format: :dynamic, strict: false, expose: nil) click to toggle source

@param file_path [String, Pathname] @option format [String, Symbol] @option strict [Boolean] @option expose [NilClass, String, Symbol] Environment key @return [void]

@see Qonfig::Commands::Instantiation::ValuesFile

@api public @since 0.17.0

# File lib/qonfig/dsl.rb, line 274
def values_file(file_path, format: :dynamic, strict: false, expose: nil)
  caller_location = ::Kernel.caller(1, 1).first

  instance_commands << Qonfig::Commands::Instantiation::ValuesFile.new(
    file_path, caller_location, format: format, strict: strict, expose: expose
  )
end