f5fc8ced30
Version quasi-utilisable. Reste à gérer la GUI.
79 lines
1.9 KiB
Ruby
79 lines
1.9 KiB
Ruby
#!/usr/bin/env ruby
|
|
|
|
require "task.rb"
|
|
|
|
class TodoList
|
|
def initialize()
|
|
@todoList=[]
|
|
end
|
|
def addTask(task)
|
|
@todoList << task
|
|
end
|
|
def to_s
|
|
res=""
|
|
i=1
|
|
@todoList.each do |x|
|
|
res <<= '[' + i.to_s + '] ' + x.to_s + "\n"
|
|
i+=1
|
|
end
|
|
res
|
|
end
|
|
def save(filename)
|
|
f=File.open(filename, 'w')
|
|
f.write( to_s() )
|
|
end
|
|
def load(filename)
|
|
begin
|
|
f=File.open(filename, 'r')
|
|
while (line=f.readline)
|
|
puts "ajout de "+line[4..-2]
|
|
addTask( Task.new(line[4..-2]) )
|
|
end
|
|
rescue Errno::ENOENT
|
|
puts "no such file #{filename}"
|
|
rescue IOError => e
|
|
puts e.exception
|
|
rescue EOFError
|
|
f.close
|
|
end
|
|
end
|
|
end
|
|
|
|
if __FILE__ == $0:
|
|
todoList=TodoList.new
|
|
defaultTaskFile="tasks.ytd"
|
|
print defaultTaskFile+"\n"
|
|
todoList.load defaultTaskFile
|
|
while true:
|
|
print "> "
|
|
entry=STDIN.gets.chomp
|
|
case entry
|
|
when /^(a|\+|add) / # ça commence par 'a ' '+ ' ou 'add '
|
|
todoList.addTask( Task.new(entry.sub(/^(a|\+|add) /,"")) )
|
|
when /^[@]/
|
|
todoList.addTask( Task.new(entry) )
|
|
when /^(l|list)( ?(\d*))?/
|
|
if $3.length>0: print "number "+$3 end
|
|
print todoList.to_s
|
|
when /^(s|save)( (.*))?/
|
|
if $3 and $3.length>0:
|
|
filename=$3
|
|
else
|
|
filename=defaultTaskFile
|
|
end
|
|
puts "saving to " + filename
|
|
todoList.save filename
|
|
when /^(load|=>) (.*)/
|
|
if $2.length>0:
|
|
filename = $2
|
|
else
|
|
filename = defaultTaskFile
|
|
end
|
|
todoList.load filename
|
|
when /^q(uit)?$/
|
|
break
|
|
else
|
|
print "/!\\ Commande inconnue /!\\\n"
|
|
end
|
|
end
|
|
end
|