module Typingpool::App::CLI::Formatter
Public Instance Methods
ask_for_selection(choices, default_index, prompt)
click to toggle source
# File lib/typingpool/app/cli/formatter.rb, line 18 def ask_for_selection(choices, default_index, prompt) selection = nil until selection input = ask(prompt) if input.to_s.match(/^\s*$/) selection = choices.last elsif not(selection = choices.detect{|possible| possible[0] == input.downcase[0] }) say("Invalid selection '#{input}'.") end end #until selection selection end
cli_bold(text)
click to toggle source
# File lib/typingpool/app/cli/formatter.rb, line 31 def cli_bold(text) HighLine.color(text, :bold) end
cli_encode(text)
click to toggle source
# File lib/typingpool/app/cli/formatter.rb, line 39 def cli_encode(text) unless (text.encoding.to_s == Encoding.default_external.to_s) text.encode!(Encoding.default_external, :invalid => :replace, :undef => :replace, :replace => "?") end text end
cli_reverse(text)
click to toggle source
# File lib/typingpool/app/cli/formatter.rb, line 35 def cli_reverse(text) HighLine.color(text, :reverse) end
prompt_from_choices(choices, default_index)
click to toggle source
# File lib/typingpool/app/cli/formatter.rb, line 7 def prompt_from_choices(choices, default_index) prompt = choices.map do |choice| cli_reverse('(') + cli_reverse(cli_bold(choice.slice(0).upcase)) + cli_reverse(")#{choice.slice(1, choice.size)}") end prompt[default_index] = cli_reverse('[') + prompt[default_index] + cli_reverse(']') prompt = prompt.join(cli_reverse(', ')) prompt end