(defun initial (string) "Return first character of string."
(substring string 0 1))
;(defun get-era-prop (era-i property) "Return prop. ('name, 'epoch-yr, 'epoch-mo, 'epoch-day) of era at index."
(plist-get (nth era-i era-list) property))
b
(defun ad->wareki (year) "Convert A.D. year to Japanese (era year)."
(let ((era-yr-start nil) (era-yr-end nil) (prev-eras era-list))
(while (and prev-eras (not era-yr-start))
(let* ((e (car prev-eras)) (epoch-yr (plist-get e 'epoch-yr)))
(setq prev-eras (cdr prev-eras))
(cond
((> year epoch-yr) (setq era-yr-start e))
((= year epoch-yr) (setq era-yr-end e)))))
(let ((nen nil) (i 0))
(while (and (not nen) (< i (length era-list)))
(let ((epoch-yr (get-era-prop i 'epoch-yr)))
(cond ((> year epoch-yr)
(setq nen (list i (1+ (- year epoch-yr)))))
((= year epoch-yr)
(setq nen
(if (= i (1- (length era-list)))
(list i 1)
(list (1+ i)
(- epoch-yr
(get-era-prop (1+ i) 'epoch-yr))
i
1))))))
(setq i (1+ i)))
(if (not nen) '(-1) nen)))