Function: org-cite-basic--parse-bibtex
org-cite-basic--parse-bibtex is a byte-compiled function defined in
oc-basic.el.gz.
Signature
(org-cite-basic--parse-bibtex DIALECT)
Documentation
Parse BibTeX entries in the current buffer.
DIALECT is the BibTeX dialect used. See bibtex-dialect.
Return a hash table with citation references as keys and fields alist as values.
Source Code
;; Defined in /usr/src/emacs/lisp/org/oc-basic.el.gz
(defun org-cite-basic--parse-bibtex (dialect)
"Parse BibTeX entries in the current buffer.
DIALECT is the BibTeX dialect used. See `bibtex-dialect'.
Return a hash table with citation references as keys and fields alist as values."
(let ((entries (make-hash-table :test #'equal))
(bibtex-sort-ignore-string-entries t))
(bibtex-set-dialect dialect t)
;; Throw an error if bibliography is malformed.
(unless (bibtex-validate)
(user-error "Malformed bibliography at %S"
(or (buffer-file-name) (current-buffer))))
(bibtex-map-entries
(lambda (key &rest _)
;; Normalize entries: field names are turned into symbols
;; including special "=key=" and "=type=", and consecutive
;; white spaces are removed from values.
(puthash key
(mapcar
(pcase-lambda (`(,field . ,value))
(pcase field
("=key=" (cons 'id key))
("=type=" (cons 'type value))
(_
(cons
(intern (downcase field))
(replace-regexp-in-string "[ \t\n]+" " " value)))))
;; Parse, substituting the @string replacements.
;; See Emacs bug#56475 discussion.
(let ((bibtex-string-files `(,(buffer-file-name)))
(bibtex-expand-strings t))
(bibtex-parse-entry t)))
entries)))
entries))