changeset 92820:693124d99e7c

Re-format comments. (persian-calendar-month-name-array) (persian-calendar-epoch, calendar-persian-date-string): Doc fixes. (persian-prompt-for-date): Remove local variable `today'.
author Glenn Morris <rgm@gnu.org>
date Thu, 13 Mar 2008 03:56:26 +0000
parents 8863bb0c2832
children d2480af27611
files lisp/calendar/cal-persia.el
diffstat 1 files changed, 34 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/calendar/cal-persia.el	Thu Mar 13 03:55:15 2008 +0000
+++ b/lisp/calendar/cal-persia.el	Thu Mar 13 03:56:26 2008 +0000
@@ -36,10 +36,11 @@
 
 (defconst persian-calendar-month-name-array
   ["Farvardin" "Ordibehest" "Xordad" "Tir" "Mordad" "Sahrivar" "Mehr" "Aban"
-   "Azar" "Dey" "Bahman" "Esfand"])
+   "Azar" "Dey" "Bahman" "Esfand"]
+  "Names of the months in the Persian calendar.")
 
 (defconst persian-calendar-epoch (calendar-absolute-from-julian '(3 19 622))
-  "Absolute date of start of Persian calendar = March 19, 622 A.D. (Julian).")
+  "Absolute date of start of Persian calendar = March 19, 622 AD (Julian).")
 
 (defun persian-calendar-leap-year-p (year)
   "True if YEAR is a leap year on the Persian calendar."
@@ -70,51 +71,50 @@
         (+ (calendar-absolute-from-persian
             (list month day (1+ (mod year 2820))))
            (* 1029983 (floor year 2820)))
-      (+ (1- persian-calendar-epoch); Days before epoch
-         (* 365 (1- year)) ; Days in prior years.
-         (* 683        ; Leap days in prior 2820-year cycles
+      (+ (1- persian-calendar-epoch)    ; days before epoch
+         (* 365 (1- year))              ; days in prior years
+         (* 683                  ; leap days in prior 2820-year cycles
             (floor (+ year 2345) 2820))
-         (* 186        ; Leap days in prior 768 year cycles
+         (* 186                   ; leap days in prior 768 year cycles
             (floor (mod (+ year 2345) 2820) 768))
-         (floor; Leap years in current 768 or 516 year cycle
+         (floor          ; leap years in current 768 or 516 year cycle
           (* 683 (mod (mod (+ year 2345) 2820) 768))
           2820)
-         -568          ; Leap years in Persian years -2345...-1
-         (calendar-sum ; Days in prior months this year.
+         -568                 ; leap years in Persian years -2345...-1
+         (calendar-sum        ; days in prior months this year
           m 1 (< m month)
           (persian-calendar-last-day-of-month m year))
-         day))))        ; Days so far this month.
+         day))))                        ; days so far this month
 
 (defun calendar-persian-year-from-absolute (date)
   "Persian year corresponding to the absolute DATE."
-  (let* ((d0        ; Prior days since start of 2820 cycles
+  (let* ((d0                   ; prior days since start of 2820 cycles
           (- date (calendar-absolute-from-persian (list 1 1 -2345))))
-         (n2820     ; Completed 2820-year cycles
+         (n2820                         ; completed 2820-year cycles
           (floor d0 1029983))
-         (d1        ; Prior days not in n2820
+         (d1                            ; prior days not in n2820
           (mod d0 1029983))
-         (n768      ; 768-year cycles not in n2820
+         (n768                          ; 768-year cycles not in n2820
           (floor d1 280506))
-         (d2        ; Prior days not in n2820 or n768
+         (d2                         ; prior days not in n2820 or n768
           (mod d1 280506))
-         (n1        ; Years not in n2820 or n768
-          ; we want is
-          ; (floor (+ (* 2820 d2) (* 2820 366)) 1029983))
-          ; but that causes overflow, so we use
-          (let ((a (floor d2 366)); we use 366 as the divisor because
-                                  ; (2820*366 mod 1029983) is small
+         (n1           ; years not in n2820 or n768
+          ;; Want:
+          ;; (floor (+ (* 2820 d2) (* 2820 366)) 1029983))
+          ;; but that causes overflow, so use the following.
+          ;; Use 366 as the divisor because (2820*366 mod 1029983) is small.
+          (let ((a (floor d2 366))
                 (b (mod d2 366)))
             (+ 1 a (floor (+ (* 2137 a) (* 2820 b) 2137) 1029983))))
-         (year (+ (* 2820 n2820); Complete 2820 year cycles
-                  (* 768 n768)  ; Complete 768 year cycles
-                  (if           ; Remaining years
-                      ; Last day of 2820 year cycle
-                      (= d1 1029617)
+         (year (+ (* 2820 n2820)        ; complete 2820 year cycles
+                  (* 768 n768)          ; complete 768 year cycles
+                  ;; Remaining years.
+                  (if (= d1 1029617)    ; last day of 2820 year cycle
                       (1- n1)
                     n1)
-                  -2345)))      ; Years before year 1
+                  -2345)))              ; years before year 1
     (if (< year 1)
-        (1- year); No year zero
+        (1- year)                       ; no year zero
       year)))
 
 (defun calendar-persian-from-absolute (date)
@@ -123,7 +123,7 @@
 The absolute date is the number of days elapsed since the imaginary
 Gregorian date Sunday, December 31, 1 BC."
   (let* ((year (calendar-persian-year-from-absolute date))
-         (month         ; Search forward from Farvardin
+         (month                        ; search forward from Farvardin
           (1+ (calendar-sum m 1
                             (> date
                                (calendar-absolute-from-persian
@@ -132,15 +132,14 @@
                                  (persian-calendar-last-day-of-month m year)
                                  year)))
                             1)))
-         (day           ; Calculate the day by subtraction
+         (day                       ; calculate the day by subtraction
           (- date (1- (calendar-absolute-from-persian
                        (list month 1 year))))))
     (list month day year)))
 
 ;;;###autoload
 (defun calendar-persian-date-string (&optional date)
-  "String of Persian date of Gregorian DATE.
-Defaults to today's date if DATE is not given."
+  "String of Persian date of Gregorian DATE, default today."
   (let* ((persian-date (calendar-persian-from-absolute
                        (calendar-absolute-from-gregorian
                         (or date (calendar-current-date)))))
@@ -171,14 +170,14 @@
 
 (defun persian-prompt-for-date ()
   "Ask for a Persian date."
-  (let* ((today (calendar-current-date))
-         (year (calendar-read
+  (let* ((year (calendar-read
                 "Persian calendar year (not 0): "
                 (lambda (x) (not (zerop x)))
                 (int-to-string
                  (extract-calendar-year
                   (calendar-persian-from-absolute
-                   (calendar-absolute-from-gregorian today))))))
+                   (calendar-absolute-from-gregorian
+                    (calendar-current-date)))))))
          (completion-ignore-case t)
          (month (cdr (assoc
                        (completing-read