Branch: Tag:

1999-05-27

1999-05-27 16:40:50 by Mirar (Pontus Hagland) <pike@sort.mirar.org>

print_month added

Rev: lib/modules/Calendar.pmod/module.pmod:1.3

4:   //! This module implements calendar calculations, and base classes   //! for time units.   //! - //! example program: - //! <pre> - //! void write_month(object m) - //! { - //! object w; - //! object today; - //! - //! today=function_object(object_program(m))->Day(); - //! - //! write(sprintf(" %|28s\n", - //! Simulate.capitalize(m->name()+" ") - //! +m->year()->name())); - //! - //! w=m->day(1)->week(); - //! - //! write(" "); - //! foreach (Array.map(w->days(),w->day)->week_day_name(),string n) - //! write(sprintf("%3s ",n[0..2])); - //! write("\n"); - //! - //! do - //! { - //! array a; - //! object d; - //! a=Array.map(Array.map(w->days(),w->day), - //! lambda(object d,object m) - //! { if (d->month()!=m) return 0; else return d; },m); - //! - //! write(sprintf("%3s ",w->name())); - //! foreach (a,d) - //! if (d) - //! if (d!=today) write(sprintf(" %2d ",d->month_day())); - //! else write(sprintf(">%2d<",d->month_day())); - //! else write(" "); - //! - //! write("\n"); - //! w++; - //! } - //! while (w->day(0)->month()==m); - //! } - //! </pre> - //! call with, for example, - //! <tt>write_month(Calendar.Swedish.Month());</tt>. - //! +    //! class time_unit   //!   //! method array(string) lesser()
232:    t->year, t->month, t->day,    t->hour, t->minute, t->second);   } +  + string print_month(void|object month,void|mapping options) + { +  object w; +  object today; +  string res=""; +  +  if (!month) // resolv thing here is to avoid compile-time resolve +  month=master()->resolv("Calendar")["Gregorian"]["Month"](); +  +  today=function_object(object_program(month))->Day(); +  +  res=sprintf(" %|28s\n", +  String.capitalize(month->name()+" ") +  +month->year()->name()); +  +  w=month->day(1)->week(); +  +  res+=" "; +  foreach (Array.map(w->days(),w->day)->week_day_name(),string n) +  res+=sprintf("%3s ",n[0..2]); +  res+="\n"; +  +  do +  { +  array a; +  object d; +  a=Array.map(Array.map(w->days(),w->day), +  lambda(object d) +  { if (d->month()!=month) return 0; else return d; }); +  +  res+=sprintf("%3s ",w->name()); +  foreach (a,d) +  if (d) +  if (d!=today) res+=sprintf(" %2d ",d->month_day()); +  else res+=sprintf(">%2d<",d->month_day()); +  else res+=" "; +  +  res+="\n"; +  w++; +  } +  while (w->day(0)->month()==month); +  +  return res; + }