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