Sha256: 206aa40b662e385be86d1efe5b3e94043ac0dc72effa4c785850d2e0f1804a78

Contents?: true

Size: 1.38 KB

Versions: 5

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

# @api private
# @since 0.13.0
class Qonfig::Validator::MethodBased < Qonfig::Validator::Basic
  # @return [Symbol, String]
  #
  # @api private
  # @since 0.13.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.13.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.13.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.13.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

5 entries across 5 versions & 1 rubygems

Version Path
qonfig-0.19.1 lib/qonfig/validator/method_based.rb
qonfig-0.19.0 lib/qonfig/validator/method_based.rb
qonfig-0.18.1 lib/qonfig/validator/method_based.rb
qonfig-0.18.0 lib/qonfig/validator/method_based.rb
qonfig-0.17.0 lib/qonfig/validator/method_based.rb