;;; cal-french.el --- calendar functions for the French Revolutionary calendar.
-;; Copyright (C) 1988, 1989, 1992, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 1989, 1992, 1994, 1995 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Keywords: calendar
(require 'calendar)
+(defconst french-calendar-epoch (calendar-absolute-from-gregorian '(9 22 1792))
+ "Absolute date of start of French Revolutionary calendar = September 22, 1792.")
+
(defconst french-calendar-month-name-array
["Vende'miaire" "Brumaire" "Frimaire" "Nivo^se" "Pluvio^se" "Vento^se"
"Germinal" "Flore'al" "Prairial" "Messidor" "Thermidor" "Fructidor"])
"Octidi" "Nonidi" "Decadi"])
(defconst french-calendar-special-days-array
- ["de la Vertu" "du Genie" "du Labour" "de la Raison" "de la Recompense"
- "de la Revolution"])
+ ["de la Vertu" "du Genie" "du Labour" "de la Raison" "de la Re'compense"
+ "de la Re'volution"])
(defun french-calendar-leap-year-p (year)
"True if YEAR is a leap year on the French Revolutionary calendar.
(- (/ (1- year) 4000))))
(* 30 (1- month));; Days in prior months this year
day;; Days so far this month
- 654414)));; Days before start of calendar (September 22, 1792).
+ (1- french-calendar-epoch))));; Days before start of calendar
(defun calendar-french-from-absolute (date)
"Compute the French Revolutionary equivalent for absolute date DATE.
The result is a list of the form (MONTH DAY YEAR).
The absolute date is the number of days elapsed since the
\(imaginary) Gregorian date Sunday, December 31, 1 BC."
- (if (< date 654415)
+ (if (< date french-calendar-epoch)
(list 0 0 0);; pre-French Revolutionary date
- (let* ((approx (/ (- date 654414) 366));; Approximation from below.
+ (let* ((approx ;; Approximation from below.
+ (/ (- date french-calendar-epoch) 366))
(year ;; Search forward from the approximation.
(+ approx
(calendar-sum y approx
(d (extract-calendar-day french-date)))
(cond
((< y 1) "")
- ((= m 13) (format "Jour %s de l'Anne'e %d de la Revolution"
+ ((= m 13) (format "Jour %s de l'Anne'e %d de la Re'volution"
(aref french-calendar-special-days-array (1- d))
y))
- (t (format "Decade %s, %s de %s de l'Anne'e %d de la Revolution"
+ (t (format "De'cade %s, %s de %s de l'Anne'e %d de la Re'volution"
(make-string (1+ (/ (1- d) 10)) ?I)
(aref french-calendar-day-name-array (% (1- d) 10))
(aref french-calendar-month-name-array (1- m))
Echo French Revolutionary date unless NOECHO is t."
(interactive
(let* ((year (calendar-read
- "Anne'e de la Revolution (>0): "
+ "Anne'e de la Re'volution (>0): "
'(lambda (x) (> x 0))
(int-to-string
(extract-calendar-year
(mapcar
'(lambda (x) (concat "Jour " x))
french-calendar-special-days-array)
- (nreverse
+ (reverse
(cdr;; we don't want rev. day in a non-leap yr.
- (nreverse
+ (reverse
(mapcar
'(lambda (x) (concat "Jour " x))
french-calendar-special-days-array))))))))
;;; cal-mayan.el --- calendar functions for the Mayan calendars.
-;; Copyright (C) 1992, 1993 Free Software Foundation, Inc.
+;; Copyright (C) 1992, 1993, 1995 Free Software Foundation, Inc.
;; Author: Stewart M. Clamen <clamen@cs.cmu.edu>
;; Edward M. Reingold <reingold@cs.uiuc.edu>
(require 'calendar)
-(defun mayan-adjusted-mod (m n)
- "Non-negative remainder of M/N with N instead of 0."
- (1+ (mod (1- m) n)))
-
(defconst calendar-mayan-days-before-absolute-zero 1137140
"Number of days of the Mayan calendar epoch before absolute day 0.
According to the Goodman-Martinez-Thompson correlation. This correlation is
(defun calendar-mayan-tzolkin-from-absolute (date)
"Convert absolute DATE into a Mayan tzolkin date (a pair)."
(let* ((long-count (+ date calendar-mayan-days-before-absolute-zero))
- (day (mayan-adjusted-mod
+ (day (calendar-mod
(+ long-count (car calendar-mayan-tzolkin-at-epoch))
13))
- (name (mayan-adjusted-mod
+ (name (calendar-mod
(+ long-count (cdr calendar-mayan-tzolkin-at-epoch))
20)))
(cons day name)))