Function: org-element--get-node-properties

org-element--get-node-properties is a byte-compiled function defined in org-element.el.gz.

Signature

(org-element--get-node-properties &optional AT-POINT-P?)

Documentation

Return node properties for headline or property drawer at point.

Upcase property names. It avoids confusion between properties obtained through property drawer and default properties from the parser (e.g. :end and :END:). Return value is a plist.

When AT-POINT-P? is nil, assume that point as at a headline. Otherwise parse properties for property drawer at point.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-element.el.gz
;;;; Headline

(defun org-element--get-node-properties (&optional at-point-p?)
  "Return node properties for headline or property drawer at point.
Upcase property names.  It avoids confusion between properties
obtained through property drawer and default properties from the
parser (e.g. `:end' and :END:).  Return value is a plist.

When AT-POINT-P? is nil, assume that point as at a headline.  Otherwise
parse properties for property drawer at point."
  (save-excursion
    (unless at-point-p?
      (forward-line)
      (when (looking-at-p org-element-planning-line-re) (forward-line)))
    (when (looking-at org-property-drawer-re)
      (forward-line)
      (let ((end (match-end 0)) properties)
	(while (< (line-end-position) end)
	  (looking-at org-property-re)
          (let* ((property-name (concat ":" (upcase (match-string 2))))
                 (property-name-symbol (intern property-name))
                 (property-value (match-string-no-properties 3)))
            (cond
             ((and (plist-member properties property-name-symbol)
                   (string-match-p "\\+$" property-name))
              (let ((val (plist-get properties property-name-symbol)))
                (if (listp val)
                    (setq properties
                          (plist-put properties
                                     property-name-symbol
                                     (append (plist-get properties property-name-symbol)
                                             (list property-value))))
                  (plist-put properties property-name-symbol (list val property-value)))))
             (t (setq properties (plist-put properties property-name-symbol property-value)))))
	  (forward-line))
	properties))))