class TTY::Prompt::ConverterRegistry
Immutable collection of converters for type transformation
@api private
Public Class Methods
new(registry = {})
click to toggle source
Create a registry of conversions
@param [Hash] registry
@api private
# File lib/tty/prompt/converter_registry.rb, line 14 def initialize(registry = {}) @_registry = registry.dup.freeze freeze end
Public Instance Methods
call(name, input)
click to toggle source
Execute converter
@api public
# File lib/tty/prompt/converter_registry.rb, line 47 def call(name, input) if name.respond_to?(:call) converter = name else converter = @_registry.fetch(name) do raise ArgumentError, "#{name.inspect} is not registered" end end converter[input] end
Also aliased as: []
inspect()
click to toggle source
# File lib/tty/prompt/converter_registry.rb, line 59 def inspect @_registry.inspect end
key?(key)
click to toggle source
Check if converter is registered
@return [Boolean]
@api public
# File lib/tty/prompt/converter_registry.rb, line 40 def key?(key) @_registry.key?(key) end
register(name, contents = nil, &block)
click to toggle source
Register converter
@param [Symbol] name
the converter name
@api public
# File lib/tty/prompt/converter_registry.rb, line 25 def register(name, contents = nil, &block) item = block_given? ? block : contents if key?(name) raise ArgumentError, "Converter for #{name.inspect} already registered" end self.class.new(@_registry.merge(name => item)) end