module PurrPr::Actions

Public Instance Methods

ask(message, default: nil, multiline: false, newline: true) click to toggle source
# File lib/purr_pr/actions.rb, line 7
def ask(message, default: nil, multiline: false, newline: true)
  puts(message)

  text = input(multiline: multiline)

  return default if text.empty?

  newline ? text + "\n" : text
end
ask_yn(message, confirm: -> {} click to toggle source
# File lib/purr_pr/actions.rb, line 17
def ask_yn(message, confirm: -> {}, decline: -> {})
  puts(message)

  callback = STDIN.getch.downcase == 'y' ? confirm : decline
  callback.call
end
finish() click to toggle source
# File lib/purr_pr/actions.rb, line 28
def finish
  throw(:abort)
end
interrupt() click to toggle source
# File lib/purr_pr/actions.rb, line 32
def interrupt
  @interrupted = true
  throw(:abort)
end
interrupted?() click to toggle source
# File lib/purr_pr/actions.rb, line 37
def interrupted?
  !!@interrupted
end
read_file(path) click to toggle source
# File lib/purr_pr/actions.rb, line 24
def read_file(path)
  File.read(path)
end

Private Instance Methods

input(multiline: false) click to toggle source
# File lib/purr_pr/actions.rb, line 43
def input(multiline: false)
  # multiline input until empty line entered
  separator = multiline ? "\n\n" : "\n"
  gets(separator).chomp(separator)
end