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