diff --git a/cal.rb b/cal.rb old mode 100644 new mode 100755 index 94c0c1e..0ba865e --- a/cal.rb +++ b/cal.rb @@ -1,32 +1,29 @@ +#!/usr/bin/ruby + require 'date' +require 'optparse' -time = Time.now.localtime -year = time.year.to_i -month = time.month.to_i -currentday = time.day # 現在日 -startwday = Date.new(year,month,1).wday # その月の最初の曜日 -endmonth = Date.new(year,month,-1) # その月の日数 -endwday = time.wday # その月の最後の曜日 +optmonth = ARGV.getopts('m:') +optyear = ARGV.getopts('y:') +# opt = OptionParser.new +# opt.on('-m') +# opt.on('-y') +# opt.parse! -a = Date.new(2024, 3, 6) -puts "\t#{a.month}月\s#{a.year}" -b = %w(日 月 火 水 木 金 土) -b.each do |week| - print "\s#{week}" +year = Date.today.year +month = Date.today.month +startwday = Date.new(year, month, 1).wday # その月の最初の曜日 +enddate = Date.new(year, month, -1).day # その月の最後の曜日 +week = %w[日 月 火 水 木 金 土] + +puts "\t#{month}月 #{year}" +puts week.join(' ') +print ' ' * startwday + +days = startwday +(1..enddate).each do |day| + print day.to_s.rjust(2) + ' ' + days += 1 + print "\n" if days % 7 == 0 end -days = (1..31).to_a -days.each do |day| - if day == 1 - print "\n\s\s#{day}" - elsif day % 7 == 0 && day != 7 - print "\s#{day}\n" - elsif day == 7 - print "\s\s#{day}\n" - elsif day >= 10 - print "\s#{day}" - else - print "\s\s#{day}" - end -end -