Function: org-element-macro-parser

org-element-macro-parser is a byte-compiled function defined in org-element.el.gz.

Signature

(org-element-macro-parser)

Documentation

Parse macro at point, if any.

When at a macro, return a list whose car is macro and cdr a plist with :key, :args, :begin, :end, :value and
:post-blank as keywords. Otherwise, return nil.

Assume point is at the macro.

Source Code

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

(defun org-element-macro-parser ()
  "Parse macro at point, if any.

When at a macro, return a list whose car is `macro' and cdr
a plist with `:key', `:args', `:begin', `:end', `:value' and
`:post-blank' as keywords.  Otherwise, return nil.

Assume point is at the macro."
  (save-excursion
    (when (looking-at "{{{\\([a-zA-Z][-a-zA-Z0-9_]*\\)\\((\\([^\000]*?\\))\\)?}}}")
      (let ((begin (point))
	    (key (downcase (match-string-no-properties 1)))
	    (value (match-string-no-properties 0))
	    (post-blank (progn (goto-char (match-end 0))
			       (skip-chars-forward " \t")))
	    (end (point))
	    (args (pcase (match-string-no-properties 3)
		    (`nil nil)
		    (a (org-macro-extract-arguments
			(replace-regexp-in-string
			 "[ \t\r\n]+" " " (org-trim a)))))))
	(list 'macro
	      (list :key key
		    :value value
		    :args args
		    :begin begin
		    :end end
		    :post-blank post-blank))))))