class ActiveValidation::Registry

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/active_validation/registry.rb, line 9
def initialize(name)
  @name  = name
  @items = Concurrent::Map.new
end

Public Instance Methods

[](item_name)
Alias for: find
clear() click to toggle source
# File lib/active_validation/registry.rb, line 14
def clear
  @items.clear
end
delete(name) click to toggle source
# File lib/active_validation/registry.rb, line 38
def delete(name)
  @items.delete(normalize_name(name))
end
each(&block) click to toggle source
# File lib/active_validation/registry.rb, line 18
def each(&block)
  @items.values.uniq.each(&block)
end
find(item_name) click to toggle source
# File lib/active_validation/registry.rb, line 22
def find(item_name)
  @items.fetch(normalize_name(item_name))
rescue KeyError => e
  raise key_error_with_custom_message(e, item_name)
end
Also aliased as: []
register(name, item) click to toggle source
# File lib/active_validation/registry.rb, line 30
def register(name, item)
  @items[normalize_name(name)] = item
end
registered?(name) click to toggle source
# File lib/active_validation/registry.rb, line 34
def registered?(name)
  @items.key?(normalize_name(name))
end

Private Instance Methods

key_error_with_custom_message(key_error, item_name) click to toggle source
# File lib/active_validation/registry.rb, line 44
def key_error_with_custom_message(key_error, item_name)
  message = key_error.message.sub("key not found", %(#{@name} not registered: "#{item_name}"))
  error = KeyError.new(message)
  error.set_backtrace(key_error.backtrace)
  error
end
normalize_name(key) click to toggle source
# File lib/active_validation/registry.rb, line 51
def normalize_name(key)
  key.respond_to?(:to_sym) ? key.to_sym : key.to_s.to_sym
end