X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=est-eval.el;h=d39563716dd2135f5cf5cee57227f31f617b81da;hb=c79a4c9e55aed133799bdc065ef1e65e66c58f5a;hp=d327070c5547513a319f52dc5ebaf6a5471c5cf2;hpb=a3e92d18471fc496d7b9492ce02cc51dc82e1afd;p=chise%2Fest.git diff --git a/est-eval.el b/est-eval.el index d327070..d395637 100644 --- a/est-eval.el +++ b/est-eval.el @@ -14,7 +14,7 @@ ((eq spec 02) (concat value "巻")) ((eq spec 03) (concat value "号")) ((eq spec 04) (concat value "編")) - ((eq spec 05) (concat value "&HD-JA-4A53;")) + ((eq spec 05) (concat value "&MJ019590;")) ((eq spec 06) (concat value "集")) ((eq spec 07) (concat value "輯")) ((eq spec 08) (concat value "部")) @@ -101,7 +101,7 @@ ;; ((string= spec "02") `((decimal (:feature ,feature)) "巻")) ;; ((string= spec "03") `((decimal (:feature ,feature)) "号")) ;; ((string= spec "04") `((decimal (:feature ,feature)) "&AJ1-03620;")) -;; ((string= spec "05") `((decimal (:feature ,feature)) "&HD-JA-4A53;")) +;; ((string= spec "05") `((decimal (:feature ,feature)) "&MJ019590;")) ;; ((string= spec "06") `((decimal (:feature ,feature)) "集")) ;; ((string= spec "07") `((decimal (:feature ,feature)) "輯")) ;; ((string= spec "08") `((decimal (:feature ,feature)) "部")) @@ -426,6 +426,27 @@ (format "%c" (ideographic-radical value))) (est-eval-value-as-S-exp value))) +(defun daijiten-page-number-to-ndl-950498 (page) + (+ (/ page 2) + (cond ((< page 229) + 23) + ((< page 261) + 24) + ((< page 263) + 25) + ((< page 516) ; 284=285 + 26) + (t + 27)))) + +(defun est-eval-value-as-daijiten-page (value) + (if (integerp value) + (list 'link + (list :ref + (format "http://image.chise.org/tify/?manifest=https://www.dl.ndl.go.jp/api/iiif/950498/manifest.json&tify={%%22pages%%22:[%d]}" + (daijiten-page-number-to-ndl-950498 value))) + value))) + (defun est-eval-value-as-object-list (value &optional separator subtype) (if (and (listp value) (listp (cdr value))) @@ -656,6 +677,20 @@ value))) (est-eval-value-default value))) +(defun est-eval-value-as-daijiten-page-list (value &optional separator subtype) + (if (and (listp value) + (listp (cdr value))) + (condition-case nil + (let (props) + (if separator + (setq props (list :separator separator))) + (if subtype + (setq props (list* :subtype subtype props))) + (list* 'list props + (mapcar #'est-eval-value-as-daijiten-page value))) + (error (format "%s" value))) + (format "%s" value))) + (defun est-eval-value-as-creators-names (value &optional subtype) (if (listp value) (let (role-name) @@ -692,9 +727,11 @@ '(:subtype unordered-list) '(:separator " ")) (mapcar (lambda (creator) - (est-eval-list - '((value (:feature <-creator))) - creator nil)) + (if (concord-object-p creator) + (est-eval-list + '((value (:feature <-creator))) + creator nil) + (est-eval-value-default creator))) value)) (est-eval-value-default value))) @@ -772,6 +809,10 @@ ((eq format 'wiki-text) (est-eval-list value object feature-name nil uri-object) ) + ((eq format 'unordered-link-list) + (est-eval-list value object feature-name nil uri-object + '(:subtype unordered-list :separator " ")) + ) ((eq format 'S-exp) (est-eval-value-as-S-exp value) ) @@ -814,6 +855,8 @@ (est-eval-value-as-created-works value 'unordered-list)) ((eq format 'journal-volume-list) (est-eval-value-as-journal-volumes value)) + ((eq format 'space-separated-daijiten-page-list) + (est-eval-value-as-daijiten-page-list value " ")) (t (est-eval-value-default value) )) @@ -957,7 +1000,7 @@ exp))))) (defun est-eval-list (format-list object feature-name - &optional lang uri-object) + &optional lang uri-object list-props) (if (consp format-list) (let ((ret (mapcar @@ -965,7 +1008,7 @@ (est-eval-unit exp object feature-name lang uri-object nil)) format-list))) (if (cdr ret) - (list* 'list nil ret) + (list* 'list list-props ret) (car ret))) (est-eval-unit format-list object feature-name lang uri-object nil)))