module Teaspoon::Registry
Public Class Methods
extended(host)
click to toggle source
# File lib/teaspoon/registry.rb, line 3 def self.extended(host) host.instance_variable_set(:@registry, {}) host.instance_variable_set(:@options, {}) end
Public Instance Methods
available()
click to toggle source
# File lib/teaspoon/registry.rb, line 33 def available @options end
fetch(name)
click to toggle source
# File lib/teaspoon/registry.rb, line 21 def fetch(name) if !(driver = @registry[normalize_name(name)]) raise not_found_exception.new(name: name, available: available.keys) end driver.call end
matches?(one, two)
click to toggle source
# File lib/teaspoon/registry.rb, line 29 def matches?(one, two) normalize_name(one) == normalize_name(two) end
not_found_in_registry(klass)
click to toggle source
# File lib/teaspoon/registry.rb, line 8 def not_found_in_registry(klass) @not_found_exception = klass end
register(name, constant, path, options = {})
click to toggle source
# File lib/teaspoon/registry.rb, line 12 def register(name, constant, path, options = {}) @registry[normalize_name(name)] = proc { require path constant.constantize } @options[normalize_name(name)] = options end
Private Instance Methods
normalize_name(name)
click to toggle source
# File lib/teaspoon/registry.rb, line 39 def normalize_name(name) name.to_s.gsub(/[-|\s]/, "_").to_sym end
not_found_exception()
click to toggle source
# File lib/teaspoon/registry.rb, line 43 def not_found_exception @not_found_exception || Teaspoon::NotFoundInRegistry end