org-element: List interpretation doesn't depend on its structure

* lisp/org-element.el (org-element-item-interpreter): Simplify bullet
  creation.
(org-element-plain-list-interpreter): Fix wrong bullets, if needed.

This change allows to intrepret plain lists without providing list's
structure, which can be a bit hairy.  For example, the following
snippet now suffices to create a list programmatically:

  (org-element-interpret-data
   '(plain-list nil
                (item (:bullet "-") (paragraph nil "a"))
                (item (:bullet "-") (paragraph nil "b"))))
This commit is contained in:
Nicolas Goaziou 2012-08-02 21:56:39 +02:00
parent eb2eacf91d
commit ecba5542e6
1 changed files with 6 additions and 17 deletions

View File

@ -1024,22 +1024,7 @@ Assume point is at the beginning of the item."
(defun org-element-item-interpreter (item contents)
"Interpret ITEM element as Org syntax.
CONTENTS is the contents of the element."
(let* ((bullet
(let* ((beg (org-element-property :begin item))
(struct (org-element-property :structure item))
(pre (org-list-prevs-alist struct))
(bul (org-element-property :bullet item)))
(org-list-bullet-string
(if (not (eq (org-list-get-list-type beg struct pre) 'ordered)) "-"
(let ((num
(car
(last
(org-list-get-item-number
beg struct pre (org-list-parents-alist struct))))))
(format "%d%s"
num
(if (eq org-plain-list-ordered-item-terminator ?\)) ")"
".")))))))
(let* ((bullet (org-list-bullet-string (org-element-property :bullet item)))
(checkbox (org-element-property :checkbox item))
(counter (org-element-property :counter item))
(tag (let ((tag (org-element-property :tag item)))
@ -1109,7 +1094,11 @@ Assume point is at the beginning of the list."
(defun org-element-plain-list-interpreter (plain-list contents)
"Interpret PLAIN-LIST element as Org syntax.
CONTENTS is the contents of the element."
contents)
(with-temp-buffer
(insert contents)
(goto-char (point-min))
(org-list-repair)
(buffer-string)))
;;;; Quote Block