class Stairs::Util::CLI::Collector

Attributes

options[R]
prompt[R]
validator[R]

Public Class Methods

new(prompt, options = {}, &block) click to toggle source
# File lib/stairs/util/cli.rb, line 17
def initialize(prompt, options = {}, &block)
  @prompt = prompt
  @options = options.reverse_merge required: true
  @validator = block
end

Public Instance Methods

run() click to toggle source
# File lib/stairs/util/cli.rb, line 23
def run
  times = 0
  value = nil

  until valid?(value, times)
    value = CLI.get(prompt.blue)
    times += 1
  end

  value
end

Private Instance Methods

valid?(value, times) click to toggle source
# File lib/stairs/util/cli.rb, line 37
def valid?(value, times)
  if validator
    validator.call(value, times)
  else
    !!value || (!options[:required] && times > 0)
  end
end