Method: Dialog.select_one

Defined in:
lib/nera/nera_dialog.rb

.select_one(arr, message = "Input the number", default = 0) ⇒ Object


Select one from the list specified by the array.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/nera/nera_dialog.rb', line 12

def select_one( arr, message = "Input the number", default = 0)
  unless arr.is_a?(Array) and arr.size >= 1 and default.to_i >= 0 and default.to_i < arr.size
    raise ArgumentError, "Arguments are not valid."
  end

  while true
    $stdout.puts( "#{message} : [#{default.to_s}]")
    arr.size.times do |i|
      puts( "[#{i}]:\t#{arr[i]}")
    end
    buf = Readline.readline(PROMPT).chomp.strip
    buf = default.to_s if buf==''

    unless buf.match(/^[0-9]+$/)
      $stdout.puts "The input #{buf} is not valid. Try again"
      redo
    end
    num = Integer(buf)
    if num >= 0 and num < arr.size
      valid_input = true
      return num
    end
    $stdout.puts "Your input is not valid. Try again."
  end
end