module Todo::CLI

CLI is the module that contains the methods to display the list as well as the methods to parse command line arguments.

Public Instance Methods

command_switch() click to toggle source

Helper method for parsing commmands.

# File lib/to-do/cli.rb, line 93
def command_switch 
        if ARGV.count > 1 
                should_display =  true
                case ARGV[0]
                when "create", "switch"
                                name = ARGV[1..-1].map{|word| word.capitalize}.join(' ')
                                Config[:working_list_name] =  name
                                Config[:working_list_exists] = true
                                puts "Switch to #{name}"
                when "add", "a"
                        Tasks.add(ARGV[1..-1].join(' '), Helpers::CLI::OPTIONS[:priority]) 
                when "finish", "f"
                        Tasks.finish(ARGV[1..-1].join(' '), Helpers::CLI::OPTIONS[:is_num])
                when "undo", "u"
                        Tasks.undo(ARGV[1..-1].join(' '), Helpers::CLI::OPTIONS[:is_num])
                when "remove", "r"
                        Tasks.clear true, ARGV[1..-1].map{|word| word.capitalize}.join(' ')
                        should_display = false
                when "set", "s"
                        if Helpers::CLI::OPTIONS[:change_priority]
                                Tasks.set_priority Helpers::CLI::OPTIONS[:priority], ARGV[1..-1].join(' '), OPTIONS[:is_num]
                        end
                else
                        puts "Invalid command.  See todo -h for help."
                        should_display = false
                end
        end
        should_display
end
commands_parser() click to toggle source

Helper method for parsing commands.

# File lib/to-do/cli.rb, line 70
def commands_parser
        if ARGV.count > 0
                should_display = command_switch
                if ARGV[0] == "clear"
                        Tasks.clear Helpers::CLI::OPTIONS[:clear_all]
                        should_display = true
                end

                if ARGV[0] == "display" || ARGV[0] == "d" || should_display
                        puts
                        display
                elsif Helpers::CLI::USAGE[ARGV[0].to_sym].nil? && ARGV.count == 1
                        puts "Invalid command.  See todo -h for help."
                elsif ARGV.count == 1
                        puts "Usage: #{Helpers::CLI::USAGE[ARGV[0].to_sym]}"
                end

        else
                display
        end
end
display() click to toggle source

Displays the list in a human readable form:

@example

********************************
          List name
********************************

 Todo:
    1. Task 1
    2. Task 2

 Completed:                  2/4
   3. Task 3
   4. Task 4
# File lib/to-do/cli.rb, line 25
def display

        colors = Helpers::CLI.create_color_hash
        tasks = Helpers.task_names
        tasks = Helpers::CLI::OPTIONS[:sort] == "n" ? tasks.order(:Task_number) : tasks.order(:Priority, :Task_number)
        list = Helpers::DATABASE[:Lists][:Name=>Config[:working_list_name]]
        count = list.nil? ? 0 : list[:Total]
        completed_count = tasks.filter(:Completed=>1).count

        #print out the header
        Helpers::CLI.print_header colors
        
        puts
        puts

        #prints out incomplete tasks
        puts "Todo:".colorize(colors[:green])
        Helpers::CLI.print_tasks 1, tasks, colors

        #Prints out complete tasks
        print "\nCompleted:".colorize(colors[:green])
        printf "%#{Config[:width]+4}s\n", "#{completed_count}/#{count}".colorize(colors[:cyan])
        Helpers::CLI.print_tasks 0, tasks, colors
        puts
end
option_parser() click to toggle source

Helper method for parsing the options using OptionParser

# File lib/to-do/cli.rb, line 52
def option_parser
        colors = Helpers::CLI.create_color_hash
        OptionParser.new do |opts|
                Helpers::CLI.options_title opts, colors
                Helpers::CLI.options_create opts, colors
                Helpers::CLI.options_display opts, colors
                Helpers::CLI.options_add opts, colors
                Helpers::CLI.options_finish opts, colors
                Helpers::CLI.options_undo opts, colors
                Helpers::CLI.options_clear opts, colors
                Helpers::CLI.options_remove opts, colors
                Helpers::CLI.options_set opts, colors
                Helpers::CLI.options_config  opts, colors
                Helpers::CLI.options_other opts, colors
        end
end
parse() click to toggle source

Parses the commands and options

# File lib/to-do/cli.rb, line 124
def parse
        optparse = option_parser
        begin
                optparse.parse!
                commands_parser
        rescue OptionParser::InvalidOption, OptionParser::InvalidArgument, 
                                 OptionParser::MissingArgument, OptionParser::NeedlessArgument => e
                puts "#{e.to_s. capitalize}. See todo -h for help."
        end
end