class TTY::Prompt::Question::Validation

A class representing question validation.

Constants

VALIDATORS

Available validator names

Attributes

pattern[R]

Public Class Methods

new(pattern) click to toggle source

Initialize a Validation

@param [Object] pattern

@return [undefined]

@api private

# File lib/tty/prompt/question/validation.rb, line 22
def initialize(pattern)
  @pattern = coerce(pattern)
end

Public Instance Methods

call(input) click to toggle source

Test if the input passes the validation

@example

Validation.new(/pattern/)
validation.call(input) # => true

@param [Object] input

the input to validate

@return [Boolean]

@api public

# File lib/tty/prompt/question/validation.rb, line 57
def call(input)
  if pattern.is_a?(String) || pattern.is_a?(Symbol)
    VALIDATORS.key?(pattern.to_sym)
    !VALIDATORS[pattern.to_sym].match(input.to_s).nil?
  elsif pattern.is_a?(Regexp)
    !pattern.match(input.to_s).nil?
  elsif pattern.is_a?(Proc)
    result = pattern.call(input.to_s)
    result.nil? ? false : result
  else false
  end
end
coerce(pattern) click to toggle source

Convert validation into known type.

@param [Object] pattern

@raise [TTY::ValidationCoercion]

raised when failed to convert validation

@api private

# File lib/tty/prompt/question/validation.rb, line 34
def coerce(pattern)
  case pattern
  when String, Symbol, Proc
    pattern
  when Regexp
    Regexp.new(pattern.to_s)
  else
    raise ValidationCoercion, "Wrong type, got #{pattern.class}"
  end
end