class Taskmeister::TaskList
Attributes
file_path[R]
Public Class Methods
new(tasks, file_path)
click to toggle source
# File lib/taskmeister/task_list.rb, line 7 def initialize(tasks, file_path) @file_path = Pathname.new file_path @shortIdToTask = {} tasks.each do |t| add(t) end @dirty = false end
Public Instance Methods
[](key)
click to toggle source
# File lib/taskmeister/task_list.rb, line 31 def [](key) @shortIdToTask[key] end
add(task)
click to toggle source
# File lib/taskmeister/task_list.rb, line 43 def add(task) prefix = assign_short_code_to_task(task) @shortIdToTask[prefix] = task @dirty = true end
complete(short_id)
click to toggle source
# File lib/taskmeister/task_list.rb, line 49 def complete(short_id) removed_val = @shortIdToTask.delete(short_id) @dirty = true if removed_val end
dirty?()
click to toggle source
# File lib/taskmeister/task_list.rb, line 39 def dirty? @dirty end
empty?()
click to toggle source
# File lib/taskmeister/task_list.rb, line 35 def empty? @shortIdToTask.empty? end
markdown_for(short_id)
click to toggle source
# File lib/taskmeister/task_list.rb, line 62 def markdown_for(short_id) return [] unless @shortIdToTask.has_key?(short_id) self[short_id].to_markdown end
replace(short_id, new_text)
click to toggle source
# File lib/taskmeister/task_list.rb, line 54 def replace(short_id, new_text) task = self[short_id] return unless task @shortIdToTask[short_id] = Task.new(new_text, task.id, task.notes) @dirty = true end
tasks()
click to toggle source
# File lib/taskmeister/task_list.rb, line 27 def tasks @shortIdToTask.values end
to_short_list()
click to toggle source
# File lib/taskmeister/task_list.rb, line 19 def to_short_list longest_id = @shortIdToTask.keys.max_by(&:length) @shortIdToTask.map { |id, task| marker = task.notes? ? " ยป" : "" "%-#{longest_id.length}s - %s%s" % [id, task.text, marker] } end
Private Instance Methods
assign_short_code_to_task(task)
click to toggle source
# File lib/taskmeister/task_list.rb, line 70 def assign_short_code_to_task(task) task.id.length.times do |i| prefix = task.id.slice(0, i + 1) return prefix unless @shortIdToTask.has_key?(prefix) end end