module Inputs

Constants

VERSION

Public Class Methods

_input_evaluator() click to toggle source
# File lib/inputs.rb, line 90
def self._input_evaluator
  @_input_evaluator ||= ->{ STDIN.gets }
end
_input_evaluator=(evaluator) click to toggle source
# File lib/inputs.rb, line 86
def self._input_evaluator=(evaluator)
  @_input_evaluator = evaluator
end
_multi_line_input_evaluator() click to toggle source
# File lib/inputs.rb, line 98
def self._multi_line_input_evaluator
  @_multi_line_input_evaluator ||= ->(){ txt = ''; STDIN.each_line {|l| txt = txt + l }; txt }
end
_multi_line_input_evaluator=(evaluator) click to toggle source
# File lib/inputs.rb, line 94
def self._multi_line_input_evaluator=(evaluator)
  @_multi_line_input_evaluator = evaluator
end
name(question) click to toggle source

Outputs a question and returns an input string. If no string is typed it returns empty string (“”)

# File lib/inputs.rb, line 22
def self.name(question)
  output question
  name = _input_evaluator.call
  name = name.chomp
  output name.green
  name
end
name!(question) click to toggle source

Outputs a question and returns an input string. If no string is typed it returns nil

# File lib/inputs.rb, line 31
def self.name!(question)
  output question
  name = _input_evaluator.call
  name = name.chomp
  if name != ''
    output name.green
    name
  end
end
names(question) click to toggle source
# File lib/inputs.rb, line 53
def self.names(question)
  output question + " (Comma separated)"
  names = _input_evaluator.call
  names = names.chomp.split(',').map(&:strip)
  output names.join(' & ').green
  names
end
output(txt) click to toggle source
# File lib/inputs.rb, line 82
def self.output(txt)
  puts txt.green
end
password(prompt = 'Please Enter your password: ') click to toggle source
# File lib/inputs.rb, line 49
def self.password(prompt = 'Please Enter your password: ')
  IO::console.getpass(prompt)
end
pick(options, question: "Please choose:", option_output_eval: ->(key, option) { " Press click to toggle source
# File lib/inputs.rb, line 61
def self.pick(options, question: "Please choose:", option_output_eval: ->(key, option) { "  Press #{key} for \"#{option}\"" })
  option_map = options
    .map(&:to_s)
    .uniq
    .map
    .with_index { |x, i| [i+1, x] }
    .to_h

  begin
    output question

    option_map.each do |key, option|
      output option_output_eval.call(key, option)
    end
    input = _input_evaluator.call
    input = input.chomp.to_i
  end until option_map.keys.include?(input)

  option_map.fetch(input)
end
text(question) click to toggle source

Multiline input, exit via CTRL+D

# File lib/inputs.rb, line 42
def self.text(question)
  output question
  txt = _multi_line_input_evaluator.call
  output txt.green
  txt
end
yn(question) click to toggle source
# File lib/inputs.rb, line 6
def self.yn(question)
  begin
    output question + " [y/n]"
    input = _input_evaluator.call
    input = input.chomp
  end until %w(y n).include?(input.chomp)

  case input
  when 'y'
    true
  when 'n'
    false
  end
end