module EasyAppHelper::Input

Constants

DEFAULT_CONFIRMATION_CHOICES

Public Instance Methods

get_user_confirmation(choices: DEFAULT_CONFIRMATION_CHOICES, default_choice: 'No', prompt: 'Are you sure ?', strict: false) click to toggle source
# File lib/easy_app_helper/input.rb, line 10
def get_user_confirmation(choices: DEFAULT_CONFIRMATION_CHOICES,
                          default_choice: 'No',
                          prompt: 'Are you sure ?',
                          strict: false)

  raise 'Invalid choices !' unless choices.is_a? Hash
  values = choices.values.flatten
  raise "Invalid default choice '#{default_choice}' !" unless values.include? default_choice
  return true if EasyAppHelper.config[:auto]
  full_prompt = '%s (%s): ' % [prompt, choices_string(values, default_choice)]
  STDOUT.print full_prompt
  STDOUT.flush
  input = nil
  until values.include? input
    input = STDIN.gets.chomp
    input = default_choice if input.nil? || input.empty?
    unless strict
      input = default_choice unless values.include? input
    end
  end
  choices.each_pair do |res, possible_choices|
    return res if possible_choices.include? input
  end
  raise 'Something wrong happened !'
end
get_user_input(prompt, default=nil) click to toggle source
# File lib/easy_app_helper/input.rb, line 37
def get_user_input(prompt, default=nil)
  full_prompt = (default.nil? or default.empty?) ? "#{prompt}: " : "#{prompt} (default: #{default}): "
  STDOUT.print full_prompt
  STDOUT.flush
  STDIN.gets.chomp
end

Private Instance Methods

choices_string(choices, default_choice, highlight= %w([ ])) click to toggle source
# File lib/easy_app_helper/input.rb, line 47
def choices_string(choices, default_choice, highlight= %w([ ]))
  choices
      .map { |choice| choice == default_choice ? "#{highlight.first}#{choice}#{highlight.last}" : choice }
      .join '/'
end