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

[](name, input)
Alias for: call
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