From: Hugo Cisneros <hmj.cisneros@gmail.com>
To: emacs-orgmode@gnu.org
Subject: [PATCH] oc-basic.el: Fix wrong type for the editors field when parsing JSON.
Date: Tue, 20 Dec 2022 18:03:42 +0100 [thread overview]
Message-ID: <6964C697-B085-4554-9BA3-54A2E3C6DC22@gmail.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 892 bytes --]
I use org-cite with a JSON bibliography and noticed a bug when an entry only has
an "editors" field but no "authors" field. The function
`org-cite-basic—get-author' correctly falls back to using the editors instead of
the authors, but `org-cite-basic--parse-json’ stringifies only the "authors"
field and not the "editors." This creates an error when other functions assume
they got a string from `org-cite-basic—get-author'. The patch fixes the issue by
applying the same transformation to both "authors" and "editors".
As explained in the ChangeLog entry, this points to a more general issue where
`org-cite-basic--get-field' is expected to return nil or a string, but calls
`org-cite-basic--get-entry' that may return an association list. I am not sure
how to fix that since it means converting anything that
`org-cite-basic--get-entry' may return into a string.
[-- Attachment #2: oc-basic.el.patch --]
[-- Type: application/octet-stream, Size: 2762 bytes --]
From 132a63faecdd4b78a3d2aaaa3fd6082b1c4a4fe7 Mon Sep 17 00:00:00 2001
From: hugcis <hmj.cisneros@gmail.com>
Date: Tue, 20 Dec 2022 17:15:20 +0100
Subject: [PATCH] oc-basic.el: Fix wrong type for the editors field when
parsing JSON.
* lisp/oc-basic.el (org-cite-basic--parse-json): Make sure
`org-cite-basic--parse-json' produces a string for the editors field.
The function `org-cite-basic--get-author' expects a string for both the
"authors" field and the "editors" field.
The conversion to string was only done for the "authors" field in
`org-cite-basic--parse-json'. This patch fixes the issue by applying the
transformation to both "authors" and "editors".
This points to a more general issue where `org-cite-basic--get-field' is
expected to return nil or a string, but calls
`org-cite-basic--get-entry' that may return an association list.
TINYCHANGE
---
lisp/oc-basic.el | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/lisp/oc-basic.el b/lisp/oc-basic.el
index 3ef7a37e3..01e314bfd 100644
--- a/lisp/oc-basic.el
+++ b/lisp/oc-basic.el
@@ -162,17 +162,17 @@ Return a hash table with citation references as keys and fields alist as values.
(puthash (cdr (assq 'id item))
(mapcar (pcase-lambda (`(,field . ,value))
(pcase field
- ('author
- ;; Author is an array of objects, each
- ;; of them designing a person. These
- ;; objects may contain multiple
- ;; properties, but for this basic
- ;; processor, we'll focus on `given' and
- ;; `family'.
+ ((or 'author 'editors)
+ ;; Author and editors are arrays of
+ ;; objects, each of them designing a
+ ;; person. These objects may contain
+ ;; multiple properties, but for this
+ ;; basic processor, we'll focus on
+ ;; `given' and `family'.
;;
;; For compatibility with BibTeX, add
- ;; "and" between authors.
- (cons 'author
+ ;; "and" between authors and editors.
+ (cons field
(mapconcat
(lambda (alist)
(concat (alist-get 'family alist)
--
2.38.1
[-- Attachment #3: Type: text/plain, Size: 15 bytes --]
Hugo Cisneros
next reply other threads:[~2022-12-20 18:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-20 17:03 Hugo Cisneros [this message]
2022-12-25 11:40 ` [PATCH] oc-basic.el: Fix wrong type for the editors field when parsing JSON Ihor Radchenko
2022-12-29 14:21 ` [PATCH] Throw an error when bibliography field is not properly parsed (was: [PATCH] oc-basic.el: Fix wrong type for the editors field when parsing JSON.) Ihor Radchenko
2023-01-17 12:26 ` Ihor Radchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6964C697-B085-4554-9BA3-54A2E3C6DC22@gmail.com \
--to=hmj.cisneros@gmail.com \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).