ytodo/todolist.rb
Yann Esposito 0664f70f64 Légères améliorations, restes beaucoups de bug
Problème de parsing de la description (n'exclue pas les created:)
    peut-être à cause d'une légère modif des regexp des contextes.
2009-06-05 16:36:55 +02:00

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
addTask( Task.new( line ) )
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 /^quit$/
break
else
print "/!\\ Commande inconnue /!\\\n"
end
end
end