class HighLine::QuestionAsker
def ask_once
-
(String)
- answer
def ask_once # If in readline mode, let reline take care of the prompt question.show_question(@highline) unless question.readline begin question.get_response_or_default(@highline) raise NotValidQuestionError unless question.valid_answer? question.convert question.check_range if question.confirm confirmation = @highline.send(:confirm, question) raise NoConfirmationQuestionError unless confirmation end rescue ExplainableError => e explain_error(e.explanation_key) retry rescue ArgumentError => error case error.message when /ambiguous/ # the assumption here is that OptionParser::Completion#complete # (used for ambiguity resolution) throws exceptions containing # the word 'ambiguous' whenever resolution fails explain_error(:ambiguous_completion) retry when /invalid value for/ explain_error(:invalid_type) retry else raise end end question.answer end