Module: PubliSci::Interactive

Included in:
Dataset, Readers::Base
Defined in:
lib/publisci/dataset/interactive.rb

Instance Method Summary collapse

Instance Method Details

#interact(message, default, options = nil) ⇒ Object

take message, options, defaults. can be passed block to handle default as well



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/publisci/dataset/interactive.rb', line 6

def interact(message, default, options=nil)
  puts message + " (#{default})\n[#{options}]"
  str = gets.chomp
  if str.size > 0
    if options
      if str.split(',').all?{|s| Integer(s) rescue nil}
        str.split(',').map(&:to_i).map{|i| options[i]}
      else
        str.split(',').each{|s| raise "unkown selection #{s}" unless options.include? s.strip}
        str.split(',').map(&:strip)
      end
    else
      str
    end
  elsif block_given?
    yield str
  else
    default
  end
end