branch: externals/org
commit 5e58af5dddca52a812a74ff18182f6ce31c68f0e
Author: AndrĂ¡s Simonyi <[email protected]>
Commit: Bastien <[email protected]>
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)