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-p "^ATTR_" keyword))
	       (mapconcat (lambda (line) (funcall keyword-to-org keyword line))
			  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.
     (let (acc)
       (org-element-properties-mapc
        (lambda (prop _ __)
          (let  ((keyword (upcase (substring (symbol-name prop) 1))))
            (when (or (string-match-p "^ATTR_" keyword)
		      (and
		       (member keyword org-element-affiliated-keywords)
		       (not (assoc keyword
                                 org-element-keyword-translation-alist))))
              (push prop acc))))
        element t)
       (nreverse acc))
     "")))