module PubliSci::Interactive

Public Instance Methods

interact(message, default, options=nil) { |str| ... } click to toggle source

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

# 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