class TodosController
This module exposes a method for each TODO related flow
Attributes
database[R]
Public Class Methods
new()
click to toggle source
# File lib/todos_controller.rb, line 11 def initialize @database = TodosListModel.new end
Public Instance Methods
add_todo(description)
click to toggle source
# File lib/todos_controller.rb, line 15 def add_todo(description) @database.add_todo description task_number = @database.pending_todos.length MessageHelper.print_task_created task_number end
complete_todo(index)
click to toggle source
# File lib/todos_controller.rb, line 29 def complete_todo(index) if database.pending_todos.length >= index database.pending_todos[index - 1].complete database.save_todos else WarningHelper.print_cant_complete_inexistent_task index end end
delete_todo(index)
click to toggle source
# File lib/todos_controller.rb, line 38 def delete_todo(index) unless @database.pending_todos.length >= index return WarningHelper.print_cant_delete_inexistent_task index end description = @database.pending_todos[index - 1].description if request_delete_confirmation(description, index) == 'y' @database.delete_pending_todo index - 1 MessageHelper.print_delete_todo_confirmed index else MessageHelper.print_delete_todo_aborted end end
list_all_todos()
click to toggle source
# File lib/todos_controller.rb, line 25 def list_all_todos list_todos include_completed: true end
list_pending_todos()
click to toggle source
# File lib/todos_controller.rb, line 21 def list_pending_todos list_todos include_completed: false end
Private Instance Methods
list_todos(include_completed: false)
click to toggle source
# File lib/todos_controller.rb, line 78 def list_todos(include_completed: false) number_of_tasks = include_completed ? database.pending_todos.length + database.completed_todos.length : database.pending_todos.length if number_of_tasks.zero? MessageHelper.print_no_matches else MessageHelper.print_task_list_header print_pending_tasks print_completed_tasks if include_completed MessageHelper.print_task_list_footer number_of_tasks end end
print_completed_tasks()
click to toggle source
# File lib/todos_controller.rb, line 70 def print_completed_tasks database.completed_todos.each do |todo| MessageHelper.print_task_list_row todo.description end end
print_pending_tasks()
click to toggle source
# File lib/todos_controller.rb, line 64 def print_pending_tasks database.pending_todos.each_with_index do |todo, index| MessageHelper.print_task_list_row todo.description, index + 1 end end
request_delete_confirmation(description, index)
click to toggle source
# File lib/todos_controller.rb, line 55 def request_delete_confirmation(description, index) user_confirmed = '' until %w[y n].include?(user_confirmed) MessageHelper.print_delete_todo_request_confirmation description, index user_confirmed = STDIN.gets.chomp end user_confirmed end