class CLI

Constants

MONTHS

Attributes

api[R]

Public Class Methods

new() click to toggle source
# File lib/cli.rb, line 9
def initialize()
        @cache = {}
        @api = NationalDayList.new()
end

Public Instance Methods

run() click to toggle source
# File lib/cli.rb, line 14
def run
        puts "CLI for 'www.nationaldaycalendar.com'. Type 'help' for usage."
        loop do
                print '>'
                cmd = gets.chomp.split(" ")
                case cmd[0]
                when "exit"
                        return;
                when "today"
                        date = Date.today
                        parseDateCommand([date.month.to_s, date.mday.to_s] + cmd[1..-1])
                when 'help'
                        puts "Type '1' or 'january' to view all national days for january."
                        puts "Type '1 2' or 'january' first to view all national days for january second."
                        puts "Type '1 2 4' to view the fourth national day for january second."
                        puts "Month and day of month can be replaced with 'today' in all commands."
                        puts "Type 'exit' to exit"
                else
                        parseDateCommand(cmd);
                end
        end
end

Private Instance Methods

parseDateCommand(cmd) click to toggle source
# File lib/cli.rb, line 38
def parseDateCommand(cmd)
        puts "Loading Month Information..." unless api.cached?(cmd[0])
        month = api.get_month(cmd[0])
        if month
                if cmd.count > 1
                        parseDayCommand(cmd, month)
                else
                        month.count.times {|index| printDay(month[index], cmd[0], index+1)}
                end
        else
                puts "Unknown month or command".colorize(:light_red)
        end
end
parseDayCommand(cmd, month) click to toggle source
# File lib/cli.rb, line 52
def parseDayCommand(cmd, month)
        day_index = cmd[1].to_i-1
        day = month[day_index]
        if day && day_index > -1
                if cmd.count>2
                        parseDayDetailsCommand(cmd, month, day)
                else
                        printDay(day, cmd[0], cmd[1])
                end
        else
                puts "Could not find day in month".colorize(:light_red)
        end
end
parseDayDetailsCommand(cmd, month, day) click to toggle source
# File lib/cli.rb, line 66
def parseDayDetailsCommand(cmd, month, day)
        nday_index = cmd[2].to_i-1
        nday = day.days[nday_index]
        if nday && nday_index>-1
                if cmd.count > 3
                        parseDayOperationCommand(nday, cmd)
                else
                        printDayDetails(nday, cmd[0], cmd[1], cmd[2])
                end
        else
                puts "Can't find national day on specified date".colorize(:light_red)
        end
end
parseDayOperationCommand(nday, cmd) click to toggle source
# File lib/cli.rb, line 80
def parseDayOperationCommand(nday, cmd)
        case cmd[3]
        when "open"
                Launchy.open(nday.url)
        else
                puts "Unknown command for national day".colorize(:light_red)
        end
end
printDay(day_of_month, month_name, day_name) click to toggle source

takes a day of month

# File lib/cli.rb, line 90
def printDay(day_of_month, month_name, day_name)
        puts "#{day_of_month.title}".colorize(:light_yellow)
        day_of_month.days.each_with_index do |nday, index|
                puts "       #{month_name} #{day_name} #{index+1}".colorize(:light_blue)+". #{nday.name}"
        end
        puts ""
end
printDayDetails(national_day, month_name, day_name, nday_name) click to toggle source
# File lib/cli.rb, line 98
def printDayDetails(national_day, month_name, day_name, nday_name)
        if !national_day.has_details
                puts "Loading National Day Information..."
                national_day.add_details
        end
        puts "#{national_day.url}"
        puts "#{national_day.name}".colorize(:light_yellow)
        puts "#{national_day.summary}" if national_day.summary!=nil && !national_day.summary.empty?
        puts ""
        puts "Type '#{month_name} #{day_name} #{nday_name} open' to view in your default browser."
end