Емануил обнови решението на 06.11.2013 17:18 (преди около 11 години)
+class TodoList < String
+
+ def TodoList.parse (text)
+ todo_text=text.split("\n")
+ TodoList.new(text)
+ end
+ def each
+ self.split("\n").each {|i| yield i}
+ end
+ def TaskName
+ task_name=TodoList.new("")
+ self.split("\n").each do |i|
+ task_name+=i.split("|")[1]+"\n"
+ end
+ return TodoList.new(task_name)
+ end
+ def filter (object)
+ result=TodoList.new("")
+ self.each do |i|
+ #if i.include? object
+ #result+=i+"\n"
+ end
+ end
+ return TodoList.new(result).TaskName
+ end
+ def tasks_todo
+ task_count=0
+ self.split("\n").each do |i|
+ #if i.split('|')[0].include? "TODO" then task_count+=1
+ end
+ end
+ return task_count
+ end
+ def tasks_in_progress
+ task_count=0
+ self.split("\n").each do |i|
+ #if i.split('|')[0].include? "CURRENT" then task_count+=1
+ end
+ end
+ return task_count
+ end
+ def tasks_completed
+ task_count=0
+ self.split("\n").each do |i|
+ #if i.split('|')[0].include? "DONE" then task_count+=1
+ end
+ end
+ return task_count
+ end
+ def completed?
+ if self.tasks_todo==0 and self.tasks_in_progress==0 then true
+ else false
+ end
+ end
+end
+class Task < TodoList
+ def status
+ string=self.split('|')[0].delete(" ")
+ if string=="TODO" or string=="CURRENT" or string=="DONE"
+ string=string.to_sym
+ else puts "Wrong Status of Task is set!"
+ end
+ end
+ def description
+ string=self.split('|')[1]
+ end
+ def priority
+ string=self.split('|')[2].delete(" ")
+ if string=="Low" or string=="Normal" or string=="High"
+ string=string.to_sym
+ else puts "Wrong Priority of Task is set!"
+ end
+ end
+ def tags
+ string=self.split('|')[3].delete(" ").split(',').to_s
+ end
+
+end
+class Criteria < String
+ class << self
+ def status (status)
+ Criteria.new(status.to_s.upcase)
+ end
+ def priority (priority)
+ Criteria.new(priority.to_s.capitalize)
+ end
+ def tags(tags)
+ Criteria.new (tags.join(', '))
+ end
+ end
+end
Имам да направя коментар тук:
Коментираните if-ове на методите filter,и 3те таск-а са причината те да не работят. Просто забравих за ограничението за 2те влагания и нямах време да ги оправя.. С тях методите работят. Не искам точки, просто не искам да излиза, че не съм се старал или нещо такова,просто ходя на работа и нямам толкова време за оптимизиране...