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