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