Class: Minder::TaskManager
- Inherits:
-
Object
- Object
- Minder::TaskManager
- Defined in:
- lib/minder/tasks/task_manager.rb
Instance Attribute Summary collapse
-
#database ⇒ Object
readonly
Returns the value of attribute database.
-
#lines ⇒ Object
Returns the value of attribute lines.
-
#search_results ⇒ Object
readonly
Returns the value of attribute search_results.
-
#tasks ⇒ Object
readonly
Returns the value of attribute tasks.
Instance Method Summary collapse
- #add_task(task) ⇒ Object
- #add_to_done_file(text) ⇒ Object
- #complete_task ⇒ Object
- #delete_task ⇒ Object
- #fetch_filtered_tasks ⇒ Object
- #filter(text) ⇒ Object
-
#initialize(database: nil) ⇒ TaskManager
constructor
A new instance of TaskManager.
- #next_search ⇒ Object
- #previous_search ⇒ Object
- #reload ⇒ Object
- #search(text) ⇒ Object
- #select_first_task ⇒ Object
- #select_last_task ⇒ Object
- #select_next_task ⇒ Object
- #select_previous_task ⇒ Object
- #select_search_result(search_index = 0) ⇒ Object
- #selected_task ⇒ Object
- #selected_task_index ⇒ Object
- #start_task ⇒ Object
- #started_task ⇒ Object
- #tasks? ⇒ Boolean
- #unfiltered_tasks ⇒ Object
- #unstart_task ⇒ Object
- #update_task(task, options = {}) ⇒ Object
- #write_file(path) ⇒ Object
- #write_file_with_backup ⇒ Object
Constructor Details
#initialize(database: nil) ⇒ TaskManager
Returns a new instance of TaskManager.
11 12 13 14 15 16 17 18 |
# File 'lib/minder/tasks/task_manager.rb', line 11 def initialize(database: nil) @database = database @selected_task_index = 0 @selected_search_result = 0 @search_results = [] @filter = '' reload end |
Instance Attribute Details
#database ⇒ Object (readonly)
Returns the value of attribute database.
7 8 9 |
# File 'lib/minder/tasks/task_manager.rb', line 7 def database @database end |
#lines ⇒ Object
Returns the value of attribute lines.
5 6 7 |
# File 'lib/minder/tasks/task_manager.rb', line 5 def lines @lines end |
#search_results ⇒ Object (readonly)
Returns the value of attribute search_results.
7 8 9 |
# File 'lib/minder/tasks/task_manager.rb', line 7 def search_results @search_results end |
#tasks ⇒ Object (readonly)
Returns the value of attribute tasks.
7 8 9 |
# File 'lib/minder/tasks/task_manager.rb', line 7 def tasks @tasks end |
Instance Method Details
#add_task(task) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/minder/tasks/task_manager.rb', line 46 def add_task(task) File.open(DOING_FILE, 'a') do |file| file.write("#{task}\n") end database.add_task(task) reload end |
#add_to_done_file(text) ⇒ Object
101 102 103 104 105 |
# File 'lib/minder/tasks/task_manager.rb', line 101 def add_to_done_file(text) File.open(DONE_FILE, 'a') do |file| file.write("[#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}] #{text}\n") end end |
#complete_task ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/minder/tasks/task_manager.rb', line 92 def complete_task task = selected_task database.complete_task(task) write_file_with_backup reload select_previous_task add_to_done_file("Finished: #{task.description}") end |
#delete_task ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/minder/tasks/task_manager.rb', line 78 def delete_task database.delete_task(selected_task) @tasks = nil write_file_with_backup reload select_previous_task end |
#fetch_filtered_tasks ⇒ Object
34 35 36 |
# File 'lib/minder/tasks/task_manager.rb', line 34 def fetch_filtered_tasks database.tasks_filtered_by(@filter) end |
#filter(text) ⇒ Object
20 21 22 23 24 |
# File 'lib/minder/tasks/task_manager.rb', line 20 def filter(text) @tasks = nil @filter = text @selected_task_index = 0 end |
#next_search ⇒ Object
163 164 165 166 167 168 169 170 |
# File 'lib/minder/tasks/task_manager.rb', line 163 def next_search @selected_search_result += 1 if @selected_search_result > search_results.length - 1 @selected_search_result = 0 end select_search_result(@selected_search_result) end |
#previous_search ⇒ Object
172 173 174 175 176 177 178 179 180 |
# File 'lib/minder/tasks/task_manager.rb', line 172 def previous_search @selected_search_result -= 1 if @selected_search_result < 0 @selected_search_result = search_results.length - 1 end select_search_result(@selected_search_result) end |
#reload ⇒ Object
87 88 89 90 |
# File 'lib/minder/tasks/task_manager.rb', line 87 def reload self.lines = File.read(DOING_FILE).strip.split("\n") @tasks = nil end |
#search(text) ⇒ Object
148 149 150 151 152 153 |
# File 'lib/minder/tasks/task_manager.rb', line 148 def search(text) @search_results = tasks.select do |task| task.description.downcase.include?(text.downcase) end @selected_search_result = 0 end |
#select_first_task ⇒ Object
144 145 146 |
# File 'lib/minder/tasks/task_manager.rb', line 144 def select_first_task @selected_task_index = 0 end |
#select_last_task ⇒ Object
140 141 142 |
# File 'lib/minder/tasks/task_manager.rb', line 140 def select_last_task @selected_task_index = tasks.length - 1 end |
#select_next_task ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/minder/tasks/task_manager.rb', line 54 def select_next_task if @selected_task_index + 1 <= tasks.length - 1 @selected_task_index += 1 else @selected_task_index = 0 end end |
#select_previous_task ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/minder/tasks/task_manager.rb', line 62 def select_previous_task if @selected_task_index == 0 @selected_task_index = tasks.length - 1 else @selected_task_index -= 1 end end |
#select_search_result(search_index = 0) ⇒ Object
155 156 157 158 159 160 161 |
# File 'lib/minder/tasks/task_manager.rb', line 155 def select_search_result(search_index = 0) return if search_results.empty? @selected_task_index = tasks.find_index do |task| task.description == search_results[search_index].description end end |
#selected_task ⇒ Object
74 75 76 |
# File 'lib/minder/tasks/task_manager.rb', line 74 def selected_task tasks[selected_task_index] end |
#selected_task_index ⇒ Object
70 71 72 |
# File 'lib/minder/tasks/task_manager.rb', line 70 def selected_task_index @selected_task_index end |
#start_task ⇒ Object
122 123 124 125 126 127 |
# File 'lib/minder/tasks/task_manager.rb', line 122 def start_task database.start_task(selected_task) write_file_with_backup add_to_done_file("Started: #{selected_task.description}") reload end |
#started_task ⇒ Object
136 137 138 |
# File 'lib/minder/tasks/task_manager.rb', line 136 def started_task tasks.find(&:started?) end |
#tasks? ⇒ Boolean
38 39 40 |
# File 'lib/minder/tasks/task_manager.rb', line 38 def tasks? !tasks.empty? end |
#unfiltered_tasks ⇒ Object
30 31 32 |
# File 'lib/minder/tasks/task_manager.rb', line 30 def unfiltered_tasks database.tasks end |
#unstart_task ⇒ Object
129 130 131 132 133 134 |
# File 'lib/minder/tasks/task_manager.rb', line 129 def unstart_task database.unstart_task(selected_task) write_file_with_backup add_to_done_file("Un-started: #{selected_task.description}") reload end |
#update_task(task, options = {}) ⇒ Object
42 43 44 |
# File 'lib/minder/tasks/task_manager.rb', line 42 def update_task(task, = {}) database.update_task(task, ) end |
#write_file(path) ⇒ Object
112 113 114 115 116 117 118 119 120 |
# File 'lib/minder/tasks/task_manager.rb', line 112 def write_file(path) File.open(path, 'w') do |file| unfiltered_tasks.each do |task| line = task.to_s line = "* #{line}" if task.started? file.write("#{line}\n") end end end |
#write_file_with_backup ⇒ Object
107 108 109 110 |
# File 'lib/minder/tasks/task_manager.rb', line 107 def write_file_with_backup FileUtils.cp(DOING_FILE, DOING_FILE + '.old') write_file(DOING_FILE) end |