class TodoStore

Public Class Methods

new() click to toggle source
# File lib/todo_store.rb, line 7
def initialize
  read
end

Public Instance Methods

save(todo) click to toggle source
# File lib/todo_store.rb, line 21
def save(todo)
  @list.add(todo)
  write
end
todos() click to toggle source
# File lib/todo_store.rb, line 11
def todos
  @list
end
update(todo) click to toggle source
# File lib/todo_store.rb, line 15
def update(todo)
  @list.delete(todo)
  @list.add(todo)
  write
end

Private Instance Methods

convert_raw_todo(raw_todo) click to toggle source
# File lib/todo_store.rb, line 36
def convert_raw_todo(raw_todo)
  todo = Todo.new raw_todo[0]
  unless raw_todo[2].nil?
    todo.finished_at =  DateTime.parse(raw_todo[2]).to_time
  end
  unless raw_todo[3].nil?
    todo.tags = raw_todo[3].split('|')
  end
  todo.status = raw_todo[1].to_sym
  todo
end
read() click to toggle source
# File lib/todo_store.rb, line 27
def read
  FileUtils.touch(todo_file)
  data = CSV.read(todo_file)
  todos = data.map do |raw_todo|
    convert_raw_todo(raw_todo)
  end
  @list = TodoList.new(todos)
end
todo_file() click to toggle source
# File lib/todo_store.rb, line 57
def todo_file
  Dir.home + '/.todos'
end
write() click to toggle source
# File lib/todo_store.rb, line 48
def write
  CSV.open(todo_file, "w") do |csv|
    @list.each do |todo|
      tags = todo.tags.join('|')
      csv << [todo.description, todo.status, todo.finished_at, tags]
    end
  end
end