Function: org-cite-process-bibliography
org-cite-process-bibliography is a byte-compiled function defined in
oc.el.gz.
Signature
(org-cite-process-bibliography INFO)
Documentation
Replace all "print_bibliography" keywords in the parse tree.
INFO is the communication channel, as a plist. Parse tree is modified by side effect.
Source Code
;; Defined in /usr/src/emacs/lisp/org/oc.el.gz
(defun org-cite-process-bibliography (info)
"Replace all \"print_bibliography\" keywords in the parse tree.
INFO is the communication channel, as a plist. Parse tree is modified
by side effect."
(org-element-map (plist-get info :parse-tree) 'keyword
(lambda (keyword)
(when (equal "PRINT_BIBLIOGRAPHY" (org-element-property :key keyword))
(let ((replacement (org-cite-export-bibliography keyword nil info))
(blanks (or (org-element-property :post-blank keyword) 0)))
(pcase replacement
;; Before removing the citation, transfer its
;; `:post-blank' property to the element before, if any.
('nil
(org-cite--set-previous-post-blank keyword blanks info)
(org-element-extract-element keyword))
;; Handle `:post-blank' before replacing keyword with string.
((pred stringp)
(let ((output (concat (org-element-normalize-string replacement)
(make-string blanks ?\n))))
(org-element-set-element keyword (org-export-raw-string output))))
;; List of elements: splice contents before keyword and
;; remove the latter. Transfer `:post-blank' to last
;; element.
((and `(,(pred listp) . ,_) contents)
(let ((last nil))
(dolist (datum contents)
(setq last datum)
(org-element-insert-before datum keyword))
(org-cite--set-post-blank last blanks)
(org-element-extract-element keyword)))
;; Single element: replace the keyword.
(`(,(pred symbolp) . ,_)
(org-cite--set-post-blank replacement blanks)
(org-element-set-element keyword replacement))
(_
(error "Invalid return value from citation export processor: %S"
replacement))))))
info))