class Qonfig::Validation::Collections::PredefinedRegistry
@api private @since 0.20.0
Attributes
@return [Hash<String,Proc>]
@api private @since 0.20.0
Public Class Methods
@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
@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
@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
@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
@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
@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
Private Instance Methods
@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
@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
@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
@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
@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
@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