たけ(tk)です。

puts calendar_table "2002/3"

で次のような文字列配列を返すスクリプトを考えているのですが、いろいろな方
法がありそうで、なかなかエレガントな方法に思いつきません。エレガントな方
法、ホゲな方法、Ruby らしい方法、Ruby らしくない方法、超短いものなどお教
えねがえれば幸いです。

        2002 年 3 月
  日  月  火  水  木  金  土
                       1   2
   3   4   5   6   7   8   9
  10  11  12  13  14  15  16
  17  18  19  20  21  22  23
  24  25  26  27  28  29  30
  31

--

たけ(tk)案

require "ParseDate"
def calendar_table( day )
  date_array = ParseDate.parsedate(day)[0..2]
  month = date_array[1]
  date_array[2]=1
  time = Time.local( *date_array )
  ret=""
  s = " "*4*time.wday
  (1..31).each{|d|
    if time.month == month
      s << "%4d" % d
      s << "\n" if time.wday == 6 
      time += 60*60*24
    end
  }
  return ["%12d 年 %d 月" % date_array,
          "  日  月  火  水  木  金  土"]+
          s.split("\n")  
end

puts calendar_table "2002/3"

Take_tk = KUMAGAI Hidetake
たけ(tk)=熊谷秀武