Todd Benson
3/14/2008 5:35:00 AM
On Fri, Mar 14, 2008 at 12:29 AM, Todd Benson <caduceass@gmail.com> wrote:
>
> On Thu, Mar 13, 2008 at 8:40 PM, Chinna Karuppan
> <chinnakaruppan@gmail.com> wrote:
> > I think I found an answer not sure if it is normal way to do things....
> > weeks << week.clone instead of week...
> > Looking forward for comments...
> > THnks
> >
> >
> >
> >
> > > weeks << week
> > > p week,weeks
> > > week.clear
> > >
> > > end
> > > end
> > > weeks << week if week.length != 0
> > > weeks
> > > end
> > >
> > > p cal_week(4)
> > >
> > > I think it is the problem of week still remembering the values....
> > > THnks
> > > CHinna
>
> Yes, you are using the same Array object over and over with
> week.clear. I tend to just do week = [] instead of clone.
>
> Todd
Sorry, didn't post example. Here it is using your code...
require "Date"
def mon_days(month,year=Date.today.year)
mday = [nil,31,28,31,30,31,30,31,31,30,31,30,31]
mday[2] = 29 if Date.leap? year
mday[month]
end
def cal_week(month,year=Date.today.year)
days = 1..mon_days(month,year)
weeks = []
week = []
wday = 1
for i in days
wday = Date.new(year,month,i).wday
week[wday] = i
if wday == 6
weeks << week
week = []
end
end
weeks << week if week.length != 0
weeks
end
p cal_week(4)
Todd