class Qonfig::Validation::Building::InstanceBuilder

@api private @since 0.20.0

Constants

DEFAULT_STRICT_BEHAVIOUR

@return [Boolean]

@api private @since 0.17.0

EMPTY_SETTING_KEY_PATTERN

@return [NilClass]

@api private @since 0.20.0

NO_PREDEFINED_VALIDATOR

@return [NilClass]

@api private @since 0.20.0

NO_RUNTIME_VALIDATION_METHOD

@return [NilClass]

@api private @since 0.20.0

NO_VALIDATION_LOGIC

@return [NilClass]

@api private @since 0.20.0

Attributes

data_set_klass[R]

@return [Class<Qonfig::DataSet>]

@api private @since 0.20.0

predefined_validator_name[R]

@return [String, Symbol, NilClass]

@api private @since 0.20.0

runtime_validation_method[R]

@return [String, Symbol, NilClass]

@api private @since 0.20.0

setting_key_pattern[R]

@return [String, Symbol, NilClass]

@api private @since 0.20.0

strict[R]

@return [Boolean]

@api private @since 0.17.0

validation_logic[R]

@return [Proc, NilClass]

@api private @since 0.20.0

Public Class Methods

build( data_set_klass, setting_key_pattern: EMPTY_SETTING_KEY_PATTERN, runtime_validation_method: NO_RUNTIME_VALIDATION_METHOD, validation_logic: NO_VALIDATION_LOGIC, strict: DEFAULT_STRICT_BEHAVIOUR, predefined_validator: NO_PREDEFINED_VALIDATOR ) click to toggle source

@param data_set_klass [Class<Qonfig::DataSet>] @option setting_key_pattern [String, Symbol, NilClass] @option predefined_validator [String, Symbol, NilClass] @option runtime_validation_method [String, Symbol, NilClass] @option validation_logic [Proc, NilClass] @option strict [Boolean] @return [Qonfig::Validator::MethodBased, Qonfig::Validator::ProcBased]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 49
def build(
  data_set_klass,
  setting_key_pattern: EMPTY_SETTING_KEY_PATTERN,
  runtime_validation_method: NO_RUNTIME_VALIDATION_METHOD,
  validation_logic: NO_VALIDATION_LOGIC,
  strict: DEFAULT_STRICT_BEHAVIOUR,
  predefined_validator: NO_PREDEFINED_VALIDATOR
)
  new(
    data_set_klass,
    setting_key_pattern,
    predefined_validator,
    runtime_validation_method,
    strict,
    validation_logic
  ).build
end
new( data_set_klass, setting_key_pattern, predefined_validator_name, runtime_validation_method, strict, validation_logic ) click to toggle source

@param data_set_klass [Class<Qonfig::DataSet>] @param setting_key_pattern [String, Symbol, NilClass] @param predefined_validator_name [String, Symbol, NilClass] @param runtime_validation_method [String, Symbol, NilClass] @param strict [Boolean] @param validation_logic [Proc, NilClass] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 78
def initialize(
  data_set_klass,
  setting_key_pattern,
  predefined_validator_name,
  runtime_validation_method,
  strict,
  validation_logic
)
  @data_set_klass = data_set_klass
  @setting_key_pattern = setting_key_pattern
  @predefined_validator_name = predefined_validator_name
  @runtime_validation_method = runtime_validation_method
  @strict = strict
  @validation_logic = validation_logic
end

Public Instance Methods

build() click to toggle source

@return [Qonfig::Validation::Validators::MethodBased] @return [Qonfig::Validation::Validators::ProcBased] @return [Qonfig::Validation::Validators::Predefined]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 100
def build
  validate_attributes!
  build_validator
end

Private Instance Methods

build_method_based_validator() click to toggle source

@return [Qonfig::Validation::Validators::MethodBased]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 185
def build_method_based_validator
  Qonfig::Validation::Validators::MethodBased.new(
    build_setting_key_matcher, strict, runtime_validation_method
  )
end
build_predefined_validator() click to toggle source

@return [Qonfig::Validation::Validators::Predefined]

@see Qonfig::Validation::Collections::PredefinedRegistry

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 207
def build_predefined_validator
  predefined_validation_logic =
    begin
      data_set_klass.predefined_validators.resolve(predefined_validator_name)
    rescue Qonfig::ValidatorNotFoundError
      Qonfig::DataSet.predefined_validators.resolve(predefined_validator_name)
    end

  Qonfig::Validation::Validators::Predefined.new(
    build_setting_key_matcher, strict, predefined_validation_logic
  )
end
build_proc_based_validator() click to toggle source

@return [Qonfig::Validation::Validators::ProcBased]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 195
def build_proc_based_validator
  Qonfig::Validation::Validators::ProcBased.new(
    build_setting_key_matcher, strict, validation_logic
  )
end
build_setting_key_matcher() click to toggle source

@return [Qonfig::Settings::KeyMatcher, NilClass]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 177
def build_setting_key_matcher
  Qonfig::Settings::KeyMatcher.new(setting_key_pattern.to_s) if setting_key_pattern
end
build_validator() click to toggle source

@return [Qonfig::Validation::Validators::MethodBased] @return [Qonfig::Validation::Validators::ProcBased] @return [Qonfig::Validation::Validators::Predefined]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 165
def build_validator
  case
  when predefined_validator_name then build_predefined_validator
  when runtime_validation_method then build_method_based_validator
  when validation_logic          then build_proc_based_validator
  end
end
validate_attributes!() click to toggle source

@return [void]

@raise [Qonfig::ArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder.rb, line 149
def validate_attributes!
  AttributesConsistency.check!(
    setting_key_pattern,
    predefined_validator_name,
    runtime_validation_method,
    strict,
    validation_logic
  )
end