Sha256: 12f4ad2144a593d90c14e7c1716fbad2e265516e3580906362c2fcd6054448df

Contents?: true

Size: 1.32 KB

Versions: 5

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

# @api private
# @since 0.13.0
class Qonfig::Validator::Predefined::Common < Qonfig::Validator::Basic
  # @return [Proc]
  #
  # @api private
  # @since 0.13.0
  attr_reader :validation

  # @param setting_key_matcher [Qonfig::Settings::KeyMatcher]
  # @param strict [Boolean]
  # @param validation [Proc]
  # @return [void]
  #
  # @api private
  # @since 0.13.0
  def initialize(setting_key_matcher, strict, validation)
    super(setting_key_matcher, strict)
    @validation = validation
  end

  # @param data_set [Qonfig::DataSet]
  # @return [void]
  #
  # @raise [Qonfig::ValidationError]
  #
  # @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 validation.call(setting_value)
    end
  end

  # @param data_set [Qonfig::DataSet]
  # @return [void]
  #
  # @raise [Qonfig::ValidationError]
  #
  # @api private
  # @since 0.13.0
  def validate_full(data_set)
    # :nocov:
    raise Qonfig::Error, 'Predefined validator should be used only with a setting key'
    # :nocov:
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

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