[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r103458: Add some new cal-hebrew func
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r103458: Add some new cal-hebrew functions. |
Date: |
Mon, 28 Feb 2011 19:32:05 -0800 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 103458
author: Ed Reingold <address@hidden>
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Mon 2011-02-28 19:32:05 -0800
message:
Add some new cal-hebrew functions.
* lisp/calendar/cal-hebrew.el (hebrew-calendar-birthday,
diary-hebrew-birthday):
New functions.
modified:
lisp/ChangeLog
lisp/calendar/cal-hebrew.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2011-03-01 03:25:24 +0000
+++ b/lisp/ChangeLog 2011-03-01 03:32:05 +0000
@@ -1,3 +1,8 @@
+2011-03-01 Ed Reingold <address@hidden>
+
+ * calendar/cal-hebrew.el (hebrew-calendar-birthday)
+ (diary-hebrew-birthday): New functions.
+
2011-03-01 Glenn Morris <address@hidden>
* dired.el (dired-safe-switches-p): Beef it up.
=== modified file 'lisp/calendar/cal-hebrew.el'
--- a/lisp/calendar/cal-hebrew.el 2011-01-25 04:08:28 +0000
+++ b/lisp/calendar/cal-hebrew.el 2011-03-01 03:32:05 +0000
@@ -792,6 +792,23 @@
(define-obsolete-function-alias 'list-yahrzeit-dates
'calendar-hebrew-list-yahrzeits "23.1")
+(defun hebrew-calendar-birthday (birth-date year)
+ "Absolute date of the anniversary of Hebrew BIRTH-DATE in Hebrew YEAR."
+ (let* ((birth-day (extract-calendar-day birth-date))
+ (birth-month (extract-calendar-month birth-date))
+ (birth-year (extract-calendar-year birth-date)))
+ (if ; It's Adar in a normal Hebrew year or Adar II
+ ; in a Hebrew leap year,
+ (= birth-month (hebrew-calendar-last-month-of-year birth-year))
+ ;; Then use the same day in last month of Hebrew year.
+ (calendar-absolute-from-hebrew
+ (list (hebrew-calendar-last-month-of-year year) birth-day year))
+ ;; Else use the normal anniversary of the birth date,
+ ;; or the corresponding day in years without that date
+ (+ (calendar-absolute-from-hebrew
+ (list birth-month 1 year))
+ birth-day -1))))
+
(defvar date)
;; To be called from diary-list-sexp-entries, where DATE is bound.
@@ -800,6 +817,40 @@
"Hebrew calendar equivalent of date diary entry."
(format "Hebrew date (until sunset): %s" (calendar-hebrew-date-string date)))
+(defun diary-hebrew-birthday
+ (birth-month birth-day birth-year &optional after-sunset)
+ "Hebrew birthday diary entry--entry applies if date is birthdate or the day
+before. Parameters are BIRTH-MONTH, BIRTH-DAY, BIRTH-YEAR; the diary entry is
+assumed to be the name of the person. Date of birth is on the *civil*
+calendar; although the date of birth is specified by the civil calendar, the
+proper Hebrew calendar birthday is determined. NOTE: If the birth occurred
+after local sunset on the given civil date, the following civil date
+corresponds to the Hebrew birthday--the optional parameter AFTER-SUNSET does
+this correction when t. If `european-calendar-style' is t, the order of the
+parameters is changed to BIRTH-DAY, BIRTH-MONTH, BIRTH-YEAR."
+ (let* ((h-date (calendar-hebrew-from-absolute
+ (+ (calendar-absolute-from-gregorian
+ (if european-calendar-style
+ (list birth-day birth-month birth-year)
+ (list birth-month birth-day birth-year)))
+ (if after-sunset 1 0))))
+ (h-month (extract-calendar-month h-date))
+ (h-day (extract-calendar-day h-date))
+ (h-year (extract-calendar-year h-date))
+ (d (calendar-absolute-from-gregorian date))
+ (h-yr (extract-calendar-year (calendar-hebrew-from-absolute d)))
+ (age (- h-yr h-year))
+ (b-date (hebrew-calendar-birthday h-date h-yr)))
+ (if (and (> age 0) (or (= b-date d) (= b-date (1+ d))))
+ (format "%s's %d%s Hebrew birthday%s"
+ entry
+ age
+ (cond ((= (% age 10) 1) "st")
+ ((= (% age 10) 2) "nd")
+ ((= (% age 10) 3) "rd")
+ (t "th"))
+ (if (= b-date d) "" " (evening)")))))
+
;;;###diary-autoload
(defun diary-hebrew-omer (&optional mark)
"Omer count diary entry.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r103458: Add some new cal-hebrew functions.,
Glenn Morris <=