Function: org-element--properties-mapc
org-element--properties-mapc is a byte-compiled function defined in
org-element-ast.el.gz.
Signature
(org-element--properties-mapc FUN NODE &optional COLLECT NO-STANDARD)
Documentation
Apply FUN for each property of NODE.
FUN will be called with three arguments: property name, property value, and node. If FUN accepts only 2 arguments, it will be called with two arguments: property name and property value. If FUN accepts only a single argument, it will be called with a single argument - property value.
Do not resolve deferred values, except :deferred.
:standard-properties internal property will be skipped.
When NO-STANDARD is non-nil, do no map over
org-element--standard-properties.
When COLLECT is symbol set, set the property values to the return
values (except the values equal to org-element-ast--nil) and finally
return nil. When COLLECT is non-nil and not symbol set, collect the
return values into a list and return it.
Otherwise, return nil.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org-element-ast.el.gz
(defun org-element--properties-mapc (fun node &optional collect no-standard)
"Apply FUN for each property of NODE.
FUN will be called with three arguments: property name, property
value, and node. If FUN accepts only 2 arguments, it will be called
with two arguments: property name and property value. If FUN accepts
only a single argument, it will be called with a single argument -
property value.
Do not resolve deferred values, except `:deferred'.
`:standard-properties' internal property will be skipped.
When NO-STANDARD is non-nil, do no map over
`org-element--standard-properties'.
When COLLECT is symbol `set', set the property values to the return
values (except the values equal to `org-element-ast--nil') and finally
return nil. When COLLECT is non-nil and not symbol `set', collect the
return values into a list and return it.
Otherwise, return nil."
(let ( acc rtn (fun-arity (cdr (func-arity fun)))
(type (org-element-type node)))
(when type
;; Compute missing properties.
(org-element-property :deferred node)
;; Map over parray.
(unless no-standard
(let ((standard-idxs
org-element--standard-properties-idxs)
(parray (org-element--parray node)))
(when parray
(while standard-idxs
(setq
rtn
(pcase fun-arity
(1 (funcall fun (aref parray (cadr standard-idxs))))
(2 (funcall
fun
(car standard-idxs)
(aref parray (cadr standard-idxs))))
(_ (funcall
fun
(car standard-idxs)
(aref parray (cadr standard-idxs))
node))))
(when collect
(unless (eq rtn (aref parray (cadr standard-idxs)))
(if (and (eq collect 'set) (not (eq rtn 'org-element-ast--nil)))
(setf (aref parray (cadr standard-idxs)) rtn)
(push rtn acc))))
(setq standard-idxs (cddr standard-idxs))))))
;; Map over plist.
(let ((props
(if (eq type 'plain-text)
(text-properties-at 0 node)
(nth 1 node))))
(while props
(unless (eq :standard-properties (car props))
(setq rtn
(pcase fun-arity
(1 (funcall fun (cadr props)))
(2 (funcall fun (car props) (cadr props)))
(_ (funcall fun (car props) (cadr props) node))))
(when collect
(if (and (eq collect 'set)
(not (eq rtn 'org-element-ast--nil)))
(unless (eq rtn (cadr props))
(if (eq type 'plain-text)
(org-add-props node nil (car props) rtn)
(setf (cadr props) rtn)))
(push rtn acc))))
(setq props (cddr props)))))
;; Return.
(when collect (nreverse acc))))