- 752 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:49:58 ]
- 宿題スレに書き込んだのが残ってた
calコマンドのように表示するように作ったのは確かなんだが、 ぶっちゃけ表示部で何やってんだかわからん #!/usr/bin/ruby require 'date' ### Usage: ./cal.rb [YYYY MM] ### ./cal.rb 2007 3 #=> Mar 2007 calender ### ./cal.rb 3 2007 #=> Mar 2007 calender ### ./cal.rb #=> this month's calender if ARGV.empty? then t = Date.today else argv = ARGV[0,2].map{|s| s.to_i} t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1) end (d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1) cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n" cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n" (d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d| (cal << ' ';next) unless d.month == d_one.month cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6) end puts cal
|

|