class Main

It's responsible for the application initialization and for the client communication interface.

Public Class Methods

exit_on_failure?() click to toggle source
# File lib/main.rb, line 57
def exit_on_failure?
  true
end

Public Instance Methods

add(*description) click to toggle source
# File lib/main.rb, line 14
def add(*description)
  return unless validate_description_presence(description)

  todo_idx = with_rescue do
    todos_controller.add(description: description.join(' '))
  end
  display_created_task_message(todo_idx)
end
delete(idx) click to toggle source
# File lib/main.rb, line 31
def delete(idx)
  with_rescue do
    index = idx.to_i - 1
    todo = todos_controller.find(index)
    if require_deletion_confirmation(index, todo)
      todos_controller.delete(index)
      print_successfull_deletion_message
    end
  end
end
done(idx) click to toggle source
# File lib/main.rb, line 24
def done(idx)
  with_rescue do
    todos_controller.done(idx.to_i - 1)
  end
end
list() click to toggle source
# File lib/main.rb, line 44
def list
  todos = with_rescue do
    todos_controller.list
  end

  if options['all']
    display_all_todos(undone: todos[:undone_items], done: todos[:done_items])
  else
    display_undone_todos(todos[:undone_items])
  end
end

Private Instance Methods

require_deletion_confirmation(idx, todo) click to toggle source
# File lib/main.rb, line 75
def require_deletion_confirmation(idx, todo)
  confirm = nil
  until %w[y n].include?(confirm)
    confirm = ask(confirm_deletion_message(idx, todo))
  end

  confirm == 'y'
end
todos_controller() click to toggle source
# File lib/main.rb, line 71
def todos_controller
  TodosController.new
end
validate_description_presence(description) click to toggle source
# File lib/main.rb, line 64
def validate_description_presence(description)
  return true if description.count.positive?

  display_description_needed_message
  false
end
with_rescue() { || ... } click to toggle source
# File lib/main.rb, line 84
def with_rescue
  yield
rescue TodoNotFoundError => e
  puts e.message.to_s
rescue StandardError => e
  display_something_went_wrong_message(e.message)
end