emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 5e58af5 52/85: oc-csl: Use citeproc-el to create CS


From: ELPA Syncer
Subject: [elpa] externals/org 5e58af5 52/85: oc-csl: Use citeproc-el to create CSL processor itemgetters
Date: Mon, 27 Sep 2021 15:57:49 -0400 (EDT)

branch: externals/org
commit 5e58af5dddca52a812a74ff18182f6ce31c68f0e
Author: AndrĂ¡s Simonyi <andras.simonyi@gmail.com>
Commit: Bastien <bzg@gnu.org>

    oc-csl: Use citeproc-el to create CSL processor itemgetters
    
    * lisp/oc-csl.el (org-cite-csl--processor): Citeproc-el now provides an
    itemgetter constructor with all the required functionality and some more, 
so we
    use it to create the itemgetter instead of `org-cite-csl--itemgetter' to 
avoid
    code duplication and make use of the additional features, in particular the
    ability to access bibliographies in `org-bibtex' format
    (see <https://gewhere.github.io/org-bibtex>).
    (org-cite-csl--itemgetter): Is removed since it is no longer used.
---
 lisp/oc-csl.el | 31 ++-----------------------------
 1 file changed, 2 insertions(+), 29 deletions(-)

diff --git a/lisp/oc-csl.el b/lisp/oc-csl.el
index b5074dc..645b1c0 100644
--- a/lisp/oc-csl.el
+++ b/lisp/oc-csl.el
@@ -99,6 +99,7 @@
 (declare-function citeproc-append-citations "ext:citeproc")
 (declare-function citeproc-render-citations "ext:citeproc")
 (declare-function citeproc-render-bib "ext:citeproc")
+(declare-function citeproc-hash-itemgetter-from-any "ext:citeproc")
 
 (declare-function org-element-interpret-data "org-element" (data))
 (declare-function org-element-map "org-element" (data types fun &optional info 
first-match no-recursion with-affiliated))
@@ -336,34 +337,6 @@ or raise an error if the variable is unset."
     (other
      (user-error "Cannot handle relative style file name" other))))
 
-(defun org-cite-csl--itemgetter (bibliography)
-  "Return Citeproc's \"itemgetter\" function for BIBLIOGRAPHY files.
-The function handles \".bib\", \".bibtex\" and \".json\" files."
-  (let ((cache (make-hash-table :test #'equal)))
-    (dolist (file bibliography)
-      (pcase (file-name-extension file)
-        ("json"
-         (let ((json-array-type 'list)
-               (json-key-type 'symbol))
-           (dolist (item (json-read-file file))
-             (puthash (cdr (assq 'id item)) item cache))))
-        ((and (or "bib" "bibtex") ext)
-         (with-temp-buffer
-          (insert-file-contents file)
-          (goto-char (point-min))
-          (bibtex-set-dialect (if (string= ext "bib") 'biblatex 'BibTeX) t)
-          (bibtex-map-entries
-           (lambda (key &rest _)
-              (puthash key
-                       (citeproc-bt-entry-to-csl (bibtex-parse-entry))
-                       cache)))))
-        (ext
-         (user-error "Unknown bibliography extension: %S" ext))))
-    (lambda (itemids)
-      (mapcar (lambda (id)
-                (cons id (gethash id cache)))
-              itemids))))
-
 (defun org-cite-csl--locale-getter ()
   "Return a locale getter.
 The getter looks for locales in `org-cite-csl-locales-dir' directory.  If it
@@ -391,7 +364,7 @@ property in INFO."
              (processor
               (citeproc-create
                (org-cite-csl--style-file info)
-               (org-cite-csl--itemgetter bibliography)
+               (citeproc-hash-itemgetter-from-any bibliography)
                (org-cite-csl--locale-getter)
                locale)))
         (plist-put info :cite-citeproc-processor processor)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]