class Qonfig::Validation::Collections::PredefinedRegistry

@api private @since 0.20.0

Attributes

validators[R]

@return [Hash<String,Proc>]

@api private @since 0.20.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 13
def initialize
  @validators = {}
  @lock = Mutex.new
end

Public Instance Methods

[](name)
Alias for: resolve
[]=(name, validation)
Alias for: register
dup() click to toggle source

@return [Qonfig::Validation::Collection::PredefinedRegistry]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 52
def dup
  thread_safe { duplicate }
end
each(&block) click to toggle source

@param block [Block] @yield [validator_name, validation_logic] @yieldparam validator_name [String] @yieldparam validation_logic [Proc] @return [Enumerable]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 64
def each(&block)
  thread_safe do
    block_given? ? validators.each_pair(&block) : validators.each_pair
  end
end
merge(predefined_registry) click to toggle source

@param predefined_registry [Qonfig::Validation::Collections::PredefinedRegistry] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 23
def merge(predefined_registry)
  thread_safe { concat(predefined_registry) }
end
register(name, validation) click to toggle source

@param name [String, Symbol] @param validation [Proc] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 33
def register(name, validation)
  thread_safe { apply(name, validation) }
end
Also aliased as: []=
resolve(name) click to toggle source

@param name [String, Symbol] @return [Proc]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 43
def resolve(name)
  thread_safe { fetch(name) }
end
Also aliased as: []

Private Instance Methods

apply(name, validation) click to toggle source

@param name [String, Symbol] @param validation [Proc] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 93
def apply(name, validation)
  name = indifferently_accessable_name(name)
  validators[name] = validation
end
concat(predefined_registry) click to toggle source

@param predefined_registry [Qonfig::Validation::Collections::PredefinedRegistry] @return [void]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 119
def concat(predefined_registry)
  predefined_registry.dup.each do |validator_name, validation_logic|
    validators[validator_name] = validation_logic
  end
end
duplicate() click to toggle source

@return [Qonfig::Validation::Collections::PredefinedRegistry]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 129
def duplicate
  Qonfig::Validation::Collections::PredefinedRegistry.new.tap do |registry|
    validators.each_pair do |validator_name, validation_logic|
      registry.register(validator_name, validation_logic)
    end
  end
end
fetch(name) click to toggle source

@param name [String, Symbol] @return [Proc]

@raise [Qonfig::ValidatorNotFoundError]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 105
def fetch(name)
  validators.fetch(indifferently_accessable_name(name))
rescue KeyError
  raise(
    Qonfig::ValidatorNotFoundError,
    "Validator with name '#{name}' does not exist."
  )
end
indifferently_accessable_name(name) click to toggle source

@param name [String, Symbol] @return [String]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 83
def indifferently_accessable_name(name)
  name.to_s
end
thread_safe(&block) click to toggle source

@param block [Proc] @return [Any]

@api private @since 0.20.0

# File lib/qonfig/validation/collections/predefined_registry.rb, line 142
def thread_safe(&block)
  @lock.synchronize(&block)
end