Skip to content

Instantly share code, notes, and snippets.

@rvbsanjose
Created October 18, 2012 00:46
Show Gist options
  • Save rvbsanjose/3909240 to your computer and use it in GitHub Desktop.
Save rvbsanjose/3909240 to your computer and use it in GitHub Desktop.
Todo 1.0
class Todo
def initialize(file_name)
@file_name = file_name
@tasks = []
load_file
end
def load_file
@task_file = File.read(@file_name)
@task_file.each_line { |line| @tasks << $1.strip if line =~ /^\d+. (.*)/ }
end
def write_to_file
File.write(@file_name, self)
end
def to_s
string = "MY TODOS\n----------\n"
@tasks.each_with_index { |task, number| string += "#{number + 1}: #{task}\n" }
string
end
def add(task)
@tasks << task
write_to_file
end
def prepend(task)
@tasks.unshift(task)
write_to_file
end
def delete_task(task_number)
@tasks.delete_at(task_number.to_i - 1)
write_to_file
end
def complete_task(task_number)
@tasks[task_number.to_i - 1].insert(-1, " - Completed")
write_to_file
end
end
todo = Todo.new('list.txt')
case ARGV[0]
when 'list' then puts todo
when 'add' then todo.add(ARGV[1..-1].join(' '))
when 'prepend' then todo.prepend(ARGV[1..-1].join(' '))
when 'delete' then todo.delete_task(ARGV[1])
when 'complete' then todo.complete_task(ARGV[1])
else puts 'Please enter valid command'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment