oc-basic.el: Stringify year from CSL-JSON date-parts

* lisp/oc-basic.el (org-cite-basic--parse-json): Make sure year
extracted from date-parts is returned as string.  Raise error if
original type other than number or string.

The stringifiation is motivated by errors like the following on Emacs 28
with nativecomp:

Error during redisplay: (jit-lock-function 544) signaled
(wrong-type-argument "Argument is not a string or a secondary string:
2007")

Additionally, the type check will warn users about problems in their
CSL-JSON bibliographies.

Fixes https://list.orgmode.org/875ykv4k2q.fsf@localhost/T/#t

TINYCHANGE
This commit is contained in:
David Lukes 2022-06-21 14:04:58 +02:00 committed by Ihor Radchenko
parent 02a22d6fad
commit 0dc27a8837
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
1 changed files with 8 additions and 1 deletions

View File

@ -189,7 +189,14 @@ Return a hash table with citation references as keys and fields alist as values.
(cons 'year (cons 'year
(cond (cond
((consp date) ((consp date)
(caar date)) (let ((year (caar date)))
(cond
((numberp year) (number-to-string year))
((stringp year) year)
(t
(error
"First element of CSL-JSON date-parts should be a number or string, got %s: %S"
(type-of year) year)))))
((stringp date) ((stringp date)
(replace-regexp-in-string (replace-regexp-in-string
(rx (rx