Function: org-element--interpret-affiliated-keywords

org-element--interpret-affiliated-keywords is a byte-compiled function defined in org-element.el.gz.

Signature

(org-element--interpret-affiliated-keywords ELEMENT)

Documentation

Return ELEMENT's affiliated keywords as Org syntax.

If there is no affiliated keyword, return the empty string.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
(defun org-element--interpret-affiliated-keywords (element)
  "Return ELEMENT's affiliated keywords as Org syntax.
If there is no affiliated keyword, return the empty string."
  (let ((keyword-to-org
	 (lambda (key value)
	   (let (dual)
	     (when (member key org-element-dual-keywords)
	       (setq dual (cdr value) value (car value)))
	     (concat "#+" (downcase key)
		     (and dual
			  (format "[%s]" (org-element-interpret-data dual)))
		     ": "
		     (if (member key org-element-parsed-keywords)
			 (org-element-interpret-data value)
		       value)
		     "\n")))))
    (mapconcat
     (lambda (prop)
       (let ((value (org-element-property prop element))
	     (keyword (upcase (substring (symbol-name prop) 1))))
	 (when value
	   (if (or (member keyword org-element-multiple-keywords)
		   ;; All attribute keywords can have multiple lines.
		   (string-match "^ATTR_" keyword))
	       (mapconcat (lambda (line) (funcall keyword-to-org keyword line))
			  (reverse value)
			  "")
	     (funcall keyword-to-org keyword value)))))
     ;; List all ELEMENT's properties matching an attribute line or an
     ;; affiliated keyword, but ignore translated keywords since they
     ;; cannot belong to the property list.
     (cl-loop for prop in (nth 1 element) by 'cddr
	      when (let ((keyword (upcase (substring (symbol-name prop) 1))))
		     (or (string-match "^ATTR_" keyword)
			 (and
			  (member keyword org-element-affiliated-keywords)
			  (not (assoc keyword
				      org-element-keyword-translation-alist)))))
	      collect prop)
     "")))