WiLiKiソース解読:src/wiliki/pasttime.scm

WiLiKiソース解読:src/wiliki/pasttime.scm

 (select-module wiliki)
 ;; Multilingualizaton of this module is tricky, as the rules of
 ;; forming plurals are different from language to language.
 ;; See GNU's gettext document for the problem.
 ;; For now, I only support English.
 (define-constant secs-in-a-year  31557600)
 (define-constant secs-in-a-month 2629800)
 (define-constant secs-in-a-day   86400)
 (define-constant secs-in-an-hour 3600)
 (define-constant secs-in-a-minute 60)
 (define (how-long-since time . opts)
  (define (pl num unit)
    (format "~a ~a~a" num unit (if (= num 1) "" "s")))
  (let-optionals* opts ((now (sys-time)))
    (let ((diff (- now time)))
      (cond
       ((>= diff secs-in-a-year)
        (pl (quotient diff secs-in-a-year) "year"))
       ((>= diff secs-in-a-month)
        (pl (quotient diff secs-in-a-month) "month"))
       ((>= diff secs-in-a-day)
        (pl (quotient diff secs-in-a-day) "day"))
       ((>= diff secs-in-an-hour)
        (pl (quotient diff secs-in-an-hour) "hour"))
       ((>= diff secs-in-a-minute)
        (pl (quotient diff secs-in-a-minute) "minute"))
       (else
        (pl diff "second")))
      )))
 (provide "wiliki/pasttime")

Last modified : 2003/03/24 07:22:56 UTC