Class: TodoTxt::List

Inherits:
Array
  • Object
show all
Defined in:
lib/todo_txt_rb/list.rb

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ List

Returns a new instance of List.



4
5
6
7
# File 'lib/todo_txt_rb/list.rb', line 4

def initialize(file)
	@todo_list = file
	@list = File.readlines(file).map{ |x| TodoTxt::Todo.new(x)}
end

Instance Method Details

#add_todo(new_todo) ⇒ Object



23
24
25
# File 'lib/todo_txt_rb/list.rb', line 23

def add_todo new_todo
	File.open(@todo_list, "a"){|f| f.puts new_todo }
end

#complete_todo(todo_num) ⇒ Object



53
54
55
56
57
58
# File 'lib/todo_txt_rb/list.rb', line 53

def complete_todo todo_num
	@list[todo_num - 1].mark_complete!
	@list << @list[todo_num - 1]
	@list.delete_at(todo_num - 1)
	self.write_file
end

#edit_todo(todo_num, new_todo) ⇒ Object



32
33
34
35
# File 'lib/todo_txt_rb/list.rb', line 32

def edit_todo todo_num, new_todo
	@list[todo_num - 1] = TodoTxt::Todo.new(new_todo + "\n")
	self.write_file
end

#get_contexts(context) ⇒ Object



49
50
51
# File 'lib/todo_txt_rb/list.rb', line 49

def get_contexts context
	self.list_active.select{|x| x.todo.include?(context)}.map{|x| x.todo}
end

#get_projects(project) ⇒ Object



45
46
47
# File 'lib/todo_txt_rb/list.rb', line 45

def get_projects project
	self.list_active.select{|x| x.todo.include?(project)}.map{|x| x.todo}
end

#get_todo_index(todo_text) ⇒ Object



60
61
62
# File 'lib/todo_txt_rb/list.rb', line 60

def get_todo_index todo_text
	@list.index{|x| x.todo.chomp.eql?(todo_text.chomp)}
end

#listObject



15
16
17
# File 'lib/todo_txt_rb/list.rb', line 15

def list
	@list.collect{|x| x.todo}
end

#list_activeObject



19
20
21
# File 'lib/todo_txt_rb/list.rb', line 19

def list_active
	@list.select{|x| x.is_active?}
end

#list_contextsObject



41
42
43
# File 'lib/todo_txt_rb/list.rb', line 41

def list_contexts
	@list.collect{|x| x.contexts}.flatten.uniq{|x| x.capitalize}
end

#list_projectsObject



37
38
39
# File 'lib/todo_txt_rb/list.rb', line 37

def list_projects
	@list.collect{|x| x.projects}.flatten.uniq{|x| x.downcase}
end

#order_by_priorityObject



64
65
66
# File 'lib/todo_txt_rb/list.rb', line 64

def order_by_priority 
	@list.sort{|x,y| x.priority.to_s <=> y.priority.to_s}
end

#remove_todo(todo_num) ⇒ Object



27
28
29
30
# File 'lib/todo_txt_rb/list.rb', line 27

def remove_todo todo_num
	@list.delete_at(todo_num - 1)
	self.write_file		
end

#write_fileObject



9
10
11
12
13
# File 'lib/todo_txt_rb/list.rb', line 9

def write_file
	File.open(@todo_list, 'w') do |f|
		@list.each{|x| f.puts x.todo.to_s}
	end
end