Forum: Ruby problems with dates?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9cbb4d07207c0adf7c95570a232483e3?d=identicon&s=25 Russ Pridemore (Guest)
on 2005-12-29 16:12
(Received via mailing list)
Hello.  I'm fairly new to ruby, but hit a snag already.  I'm writing a
small .rhtml file that will display a dynamic calendar.  Its pretty
basic right now, consisting of a simple html table and some css.  I
also wrote a Calendar class, included below, to assist with the task.
The problem is that apache mod_ruby segfaults!  I've tried running via
the command-line with both erb and eruby.  erb corrupts the output,
putting the dynamically generated stuff at the top, above the static
html code.  eruby seems to handle it fine most of the time, but I have
seen errors from it as well, reporting an error at
/usr/lib/ruby/1.8/date.rb line 305.  I'm running apache 2.0.54, ruby
1.8.3, mod_ruby 1.2.4 on Gentoo Linux.

Thanks in advance,
Russ

<% require 'date'; require 'calendar' %><?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/
DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Date Test</title>
<link rel="stylesheet" type="text/css" href="home.css"/>
</head>
<body>
<div class="content">
<div>
<% d = Date.today %>
<table class="calendar"><caption><a href="#"><%=
Date::MONTHNAMES[d.month] + ' '
 + d.year.to_s %></a></caption><thead><tr>
<% Date::TINY_DAYNAMES.each do |name| %>
  <th><%= name %></th> <% end %>
  </tr></thead><tbody><tr>
<% cal = Calendar.new(Date.today.year)
  mo = cal.getMonth(Date.today.month)
  for weeks in 0...mo.length
    wk = mo[weeks]
    print '<tr>'
    for dy in 0...wk.length
      style = Array.new
      title = nil
      if (wk[dy] == Date.today)
        style.push 'today'
        title = 'today'
      end
      style.push 'other' if (wk[dy].month != Date.today.month)
      print '<td'
      print ' class="' + style.to_s + '"' if (style.length > 0)
      print ' title="' + title + '"' if (title)
      print '>' + wk[dy].day.to_s + '</td>'
    end
    puts '</tr>'
  end %>
  </tbody></table>
</div>
</div></body></html>

/usr/lib/ruby/site-ruby/calendar.rb:
require 'date'

class Date
   TINY_DAYNAMES = %w(S M T W T F S)
end

class Calendar
   def initialize(year=Date.today.year)
      @year = year
   end

   def add(event)
      list = allEvents[event.date]
      list = Array.new if (!list)
      list.push(event)
      allEvents[event.date] = list
      monEvents = @monthly[event.date.month]
   end

   def getMonth(mo)
      dt = Date.new(@year, mo, 1)
      i = dt.month
      list = Array.new
      while i != (mo+1) % 12
         wk = getWeek(dt.month, dt.day)
         dt = wk[6].succ
         i = dt.month
         list.push(wk)
      end
      list
   end

   def getWeek(mo, dy)
      dt = Date.new(@year, mo, dy)
      dt -= dt.wday
      list = Array.new
      for i in 0..6
         list.push dt
         dt = dt.succ
      end
      list
   end

   def getDay(mo, dy)
      Date.new(@year, mo, dy)
   end
end
This topic is locked and can not be replied to.