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