RubyとSinatraではじめるWebアプリケーション開発の教科書:webcal.rb

www.morikita.co.jp

webカレンダーを作ってみました。

f:id:kei_kmj:20220129114124p:plain

# ~/webcal/webcal.rb
require 'sinatra'
require 'date'

set :environment, :production

get '/:y/:m' do
  @year = params[:y].to_i
  @month = params[:m].to_i

  @table = '<table border>'
  @table += '<tr><th>sun</th><th>mon</th><th>tue</th><th>wed</th>'
  @table += '<th>thu</th><th>fri</th><th>sat</th></tr>'

  lastday = Date.new(@year, @month, -1).day
  firstday = Date.new(@year, @month, 1)

  date = 1
  6.times do |p|
    @table += '<tr>'
    7.times do |q|
      if p.zero? && q < firstday.wday
        @table += '<td></td>'
      elsif date <= lastday
        @table += "<td>#{date}</td>"
        date += 1
      else
        @table += '<td></td>'
      end
    end
    @table += '</tr>'

    break if date > lastday
  end
  @table += '</table>'
  erb :moncal
end