class Qonfig::Validation::Building::InstanceBuilder::AttributesConsistency

@api private @since 0.20.0 rubocop:disable Metrics/ClassLength

Attributes

predefined_validator[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

check!( setting_key_pattern, predefined_validator, runtime_validation_method, strict, validation_logic ) click to toggle source

@param setting_key_pattern [String, Symbol, NilClass] @param predefined_validator [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/attribute_consistency.rb, line 17
def check!(
  setting_key_pattern,
  predefined_validator,
  runtime_validation_method,
  strict,
  validation_logic
)
  new(
    setting_key_pattern,
    predefined_validator,
    runtime_validation_method,
    strict,
    validation_logic
  ).check!
end
new( setting_key_pattern, predefined_validator, runtime_validation_method, strict, validation_logic ) click to toggle source

@param setting_key_pattern [String, Symbol, NilClass] @param predefined_validator [String, Symbol, NilClass] @param runtime_validation_method [String, Symbol, NilClass] @param validation_logic [Proc, NilClass] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 42
def initialize(
  setting_key_pattern,
  predefined_validator,
  runtime_validation_method,
  strict,
  validation_logic
)
  @setting_key_pattern = setting_key_pattern
  @predefined_validator = predefined_validator
  @runtime_validation_method = runtime_validation_method
  @strict = strict
  @validation_logic = validation_logic
end

Public Instance Methods

check!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 62
def check!
  consistent_strict_behaviour!
  consistent_method_choice!
  consistent_predefined_validator!
  cosnistent_runtime_validation_method!
  consistent_validation_logic!
  consistent_setting_key_pattern!
end

Private Instance Methods

consistent_method_choice!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 109
def consistent_method_choice!
  unless runtime_validation_method || validation_logic || predefined_validator
    raise(
      Qonfig::ValidatorArgumentError,
      'Empty validation (you should provide: dataset method OR proc OR predefined validator)'
    )
  end

  if ((runtime_validation_method && validation_logic) ||
     (predefined_validator && (runtime_validation_method || validation_logic)))
    raise(
      Qonfig::ValidatorArgumentError,
      'Incosistent validation (you should use: dataset method OR proc OR predefined validator)'
    )
  end
end
consistent_predefined_validator!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 147
def consistent_predefined_validator!
  return if predefined_validator.nil?
  return if predefined_validator.is_a?(Symbol)
  return if predefined_validator.is_a?(String)

  raise(
    Qonfig::ValidatorArgumentError,
    'Incorrect name of predefined validator (should be a symbol or a string)'
  )
end
consistent_setting_key_pattern!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 199
def consistent_setting_key_pattern!
  return if setting_key_pattern.nil?
  return if setting_key_pattern.is_a?(Symbol)
  return if setting_key_pattern.is_a?(String)

  raise(
    Qonfig::ValidatorArgumentError,
    'Incompatible setting key pattern (should be a string or a symbol)'
  )
end
consistent_strict_behaviour!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.17.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 132
def consistent_strict_behaviour!
  unless strict.is_a?(TrueClass) || strict.is_a?(FalseClass)
    raise(
      Qonfig::ValidatorArgumentError,
      ':strict should be a boolean'
    )
  end
end
consistent_validation_logic!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 181
def consistent_validation_logic!
  return if validation_logic.nil?
  return if validation_logic.is_a?(Proc)

  # :nocov:
  raise(
    Qonfig::ValidatorArgumentError,
    'Incompatible validation object (should be a proc)'
  )
  # :nocov:
end
cosnistent_runtime_validation_method!() click to toggle source

@return [void]

@raise [Qonfig::ValidatorArgumentError]

@api private @since 0.20.0

# File lib/qonfig/validation/building/instance_builder/attribute_consistency.rb, line 164
def cosnistent_runtime_validation_method!
  return if runtime_validation_method.nil?
  return if runtime_validation_method.is_a?(Symbol)
  return if runtime_validation_method.is_a?(String)

  raise(
    Qonfig::ValidatorArgumentError,
    'Incompatible validation method name (should be a symbol or a string)'
  )
end