]> git.eshelyaron.com Git - emacs.git/commitdiff
(calendar-french-date-string): New function.
authorRichard M. Stallman <rms@gnu.org>
Sun, 30 Jan 1994 00:29:32 +0000 (00:29 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 30 Jan 1994 00:29:32 +0000 (00:29 +0000)
(calendar-print-french-date, diary-french-date): Use it.

lisp/calendar/cal-french.el

index 4a528eb0aa0df26a409137e9cecdabe9031c2b94..b2572e56f98fc0f6a227e3feb3fd3ef71f5db67d 100644 (file)
@@ -127,27 +127,36 @@ The absolute date is the number of days elapsed since the
                (1- (calendar-absolute-from-french (list month 1 year))))))
     (list month day year))))
 
-(defun calendar-print-french-date ()
-  "Show the French Revolutionary calendar equivalent of the selected date."
-  (interactive)
+(defun calendar-french-date-string (&optional date)
+  "String of French Revolutionary date of Gregorian DATE.
+Returns the empty string if DATE is pre-French Revolutionary.
+Defaults to today's date if DATE is not given."
   (let* ((french-date (calendar-french-from-absolute
                        (calendar-absolute-from-gregorian
-                        (or (calendar-cursor-to-date)
-                            (error "Cursor is not on a date!")))))
+                        (or date (calendar-current-date)))))
          (y (extract-calendar-year french-date))
          (m (extract-calendar-month french-date))
          (d (extract-calendar-day french-date)))
-    (if (< y 1)
+    (cond
+     ((< y 1) "")
+     ((= m 13) (format "Jour %s de l'Anne'e %d de la Revolution"
+                       (aref french-calendar-special-days-array (1- d))
+                       y))
+     (t (format "Decade %s, %s de %s de l'Anne'e %d de la Revolution"
+                (make-string (1+ (/ (1- d) 10)) ?I)
+                (aref french-calendar-day-name-array (% (1- d) 10))
+                (aref french-calendar-month-name-array (1- m))
+                y)))))
+
+(defun calendar-print-french-date ()
+  "Show the French Revolutionary calendar equivalent of the selected date."
+  (interactive)
+  (let ((f (calendar-french-date-string
+            (or (calendar-cursor-to-date)
+                (error "Cursor is not on a date!")))))
+    (if (string-equal f "")
         (message "Date is pre-French Revolution")
-      (if (= m 13)
-          (message "Jour %s de l'Anne'e %d de la Revolution"
-                   (aref french-calendar-special-days-array (1- d))
-                   y)
-        (message "Decade %s, %s de %s de l'Anne'e %d de la Revolution"
-                 (make-string (1+ (/ (1- d) 10)) ?I)
-                 (aref french-calendar-day-name-array (% (1- d) 10))
-                 (aref french-calendar-month-name-array (1- m))
-                 y)))))
+      (message f))))
 
 (defun calendar-goto-french-date (date &optional noecho)
   "Move cursor to French Revolutionary date DATE.
@@ -204,21 +213,12 @@ Echo French Revolutionary date unless NOECHO is t."
 
 (defun diary-french-date ()
   "French calendar equivalent of date diary entry."
-  (let* ((french-date (calendar-french-from-absolute
-                       (calendar-absolute-from-gregorian date)))
-         (y (extract-calendar-year french-date))
-         (m (extract-calendar-month french-date))
-         (d (extract-calendar-day french-date)))
-    (if (> y 0)
-      (if (= m 13)
-          (format "Jour %s de l'Anne'e %d de la Revolution"
-                   (aref french-calendar-special-days-array (1- d))
-                   y)
-        (format "Decade %s, %s de %s de l'Anne'e %d de la Revolution"
-                 (make-string (1+ (/ (1- d) 10)) ?I)
-                 (aref french-calendar-day-name-array (% (1- d) 10))
-                 (aref french-calendar-month-name-array (1- m))
-                 y)))))
+  (let ((f (calendar-french-date-string
+            (or (calendar-cursor-to-date)
+                (error "Cursor is not on a date!")))))
+    (if (string-equal f "")
+        "Date is pre-French Revolution"
+      f)))
 
 (provide 'cal-french)