Sha256: 6334a5bbb09a40acf05a58b5cd1736584f16d799ea9400bcbbad334fcf60ddbb

Contents?: true

Size: 1.4 KB

Versions: 11

Compression:

Stored size: 1.4 KB

Contents

# frozen_string_literal: true

# @api private
# @since 0.20.0
class Qonfig::Validation::Validators::MethodBased < Qonfig::Validation::Validators::Basic
  # @return [Symbol, String]
  #
  # @api private
  # @since 0.20.0
  attr_reader :runtime_validation_method

  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher, NilClass]
  # @param strict [Boolean]
  # @param runtime_validation_method [String, Symbol]
  # @return [void]
  #
  # @api private
  # @since 0.20.0
  def initialize(setting_key_matcher, strict, runtime_validation_method)
    super(setting_key_matcher, strict)
    @runtime_validation_method = runtime_validation_method
  end

  # @param data_set [Qonfig::DataSet]
  # @return [Boolean]
  #
  # @api private
  # @since 0.20.0
  def validate_concrete(data_set)
    data_set.settings.__deep_each_setting__ do |setting_key, setting_value|
      next unless setting_key_matcher.match?(setting_key)
      next if !strict && setting_value.nil?

      raise(
        Qonfig::ValidationError,
        "Invalid value of setting <#{setting_key}> (#{setting_value})"
      ) unless data_set.__send__(runtime_validation_method, setting_value)
    end
  end

  # @param data_set [Qonfig::DataSet]
  # @return [Boolean]
  #
  # @api private
  # @since 0.20.0
  def validate_full(data_set)
    unless data_set.__send__(runtime_validation_method)
      raise(Qonfig::ValidationError, 'Invalid config object')
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
qonfig-0.30.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.28.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.27.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.26.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.25.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.24.1 lib/qonfig/validation/validators/method_based.rb
qonfig-0.24.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.23.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.22.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.21.0 lib/qonfig/validation/validators/method_based.rb
qonfig-0.20.0 lib/qonfig/validation/validators/method_based.rb