class Todo::List

The Class that represents a list of tasks

Attributes

completed_count[RW]
completed_tasks[RW]
count[RW]
name[RW]
tasks[RW]

Public Class Methods

new(name) click to toggle source

Creates a new list and sets it to be the working list

@param [String] name the name of the list

# File lib/to-do/old/list.rb, line 12
def initialize name
        @tasks = Hash.new
        @completed_tasks = Hash.new
        @count = 0
        @completed_count = 0
        @name = name
        if !File.exists? Config[:lists_directory]
                Dir.mkdir(Config[:lists_directory])
        end
        update
        Config[:working_list_name] = name.downcase.gsub(/ /, '_')
        Config[:working_list_exists] = true
        Config.write
        puts "Created List #{name}."
end
remove(name) click to toggle source

Class method that removes a list from the your lists.

@param [string] name name of the list that you are trying to remove

# File lib/to-do/old/list.rb, line 146
def self.remove name
        underscore_name = name.downcase.gsub(/ /, '_')
        begin
                FileUtils.rm File.join(Config[:lists_directory], underscore_name +'.yml')
                puts "Removed list #{name}"
        rescue
                puts "List doesn't exist"
        end
        if underscore_name == Config[:working_list_name]
                Config[:working_list_exists] = false
        end
end

Public Instance Methods

add(task) click to toggle source

Adds the tast to the list

@param [String] task the task to add to the list

# File lib/to-do/old/list.rb, line 39
def add task
        @count+=1
        @tasks[@count] = task
        puts "Added task #{task}."
        update
end
clear(clear_all) click to toggle source

clears the task in the list

@param [Bool] clear_all if true, clears all completed and uncompleted tasks and resets the count. if false, just clears the completed tasks

# File lib/to-do/old/list.rb, line 130
def clear clear_all
        clear_completed
        if clear_all
                @tasks = Hash.new
                @completed_count = 0
                @count = 0
                puts "Cleared list."
        else
                puts "Cleared completed tasks."
        end
        update
end
clear_completed() click to toggle source

clears just the completed tasks

# File lib/to-do/old/list.rb, line 121
def clear_completed
        @completed_tasks = Hash.new
        update
end
finish(task, is_num) click to toggle source

finish the task. task is either a case insensitive task on the list or the task number. Prints out either the task is not in the list or that i succesfully finished the task

@param task either a task number or task name to finish @param [Bool] is_num if the task param represents the task number, true. false if it is the task name

# File lib/to-do/old/list.rb, line 53
def finish task, is_num
        if is_num
                if !@tasks[task.to_i].nil?
                        @completed_tasks[task.to_i] = @tasks[task.to_i]
                        @tasks.delete(task.to_i)
                        @completed_count+=1
                        @completed_tasks = Hash[@completed_tasks.sort]
                        puts "Finished #{@completed_tasks[task.to_i]}."
                else
                        puts "Task \##{task} not in list."
                end
        else
                hash = Hash.new
                @tasks.each do |k,v|
                        hash[k] = v.downcase
                end
                if hash.value?(task.downcase)
                        num = hash.key(task.downcase)
                        @completed_tasks[num] = @tasks[num]
                        @tasks.delete(num)
                        @completed_count+=1
                        @completed_tasks = Hash[@completed_tasks.sort]
                        puts "Finished #{@completed_tasks[num]}."
                else
                        puts "Task #{task} is not in list."
                end
        end
        update
end
undo(task, is_num) click to toggle source

undos finishing a task. task is either a case insensitive task on the list or the task number. Prints out either the task is not in the list or that i succesfully undoed finished the task

@param task either a task number or task name to finish @param [Bool] is_num if the task param represents the task number, true. false if it is the task name

# File lib/to-do/old/list.rb, line 90
def undo task, is_num
        if is_num
                if !@completed_tasks[task.to_i].nil?
                        @tasks[task.to_i] = @completed_tasks[task.to_i]
                        @completed_tasks.delete(task.to_i)
                        @completed_count-=1
                        @tasks = Hash[@tasks.sort]
                        puts "Undo completeing #{@tasks[task.to_i]}."
                else
                        puts "Task \##{task} not in list."
                end
        else
                hash = Hash.new
                @completed_tasks.each do |k,v|
                        hash[k] = v.downcase
                end
                if hash.value?(task.downcase)
                        num = hash.key(task.downcase)
                        @tasks[num] = @completed_tasks[num]
                        @completed_tasks.delete(num)
                        @completed_count-=1
                        @tasks = Hash[@tasks.sort]
                        puts "Undo completeing #{@tasks[num]}."
                else
                        puts "Task #{task} is not in list."
                end
        end
        update
end
update() click to toggle source

Updates the yaml file

# File lib/to-do/old/list.rb, line 29
def update
        path = File.join(Config[:lists_directory], @name.downcase.gsub(/ /, '_') +'.yml')
        File.open(path, 'w') do |fh|
                fh.puts(self.to_yaml)
        end
end