From 0760016f2b100f4050e16f5682eca305178f3494 Mon Sep 17 00:00:00 2001 From: Rasmus Date: Mon, 13 Feb 2017 17:52:38 +0100 Subject: [PATCH] ox-html: plain list supports arbitrary attributes * lisp/ox-html.el (org-html-plain-list-type): New defconst. (org-html-begin-plain-list): (org-html-plain-list): (org-html-end-plain-list): Use new defconst and support attributes. --- lisp/ox-html.el | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index ef8c9b546..1f3def999 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -449,6 +449,10 @@ You can use `org-html-head' and `org-html-head-extra' to add to this style. If you don't want to include this default style, customize `org-html-head-include-default-style'.") +(defconst org-html-plain-list-type + '(ordered "ol" unordered "ul" descriptive "dl") + "Plist of Org and html list types.") + ;;; User Configuration Variables @@ -3138,34 +3142,35 @@ the plist used as a communication channel." ;;;; Plain List -;; FIXME Maybe arg1 is not needed because
  • already sets -;; the correct value for the item counter -(defun org-html-begin-plain-list (type &optional arg1) +(defun org-html-begin-plain-list (type &optional attributes) "Insert the beginning of the HTML list depending on TYPE. When ARG1 is a string, use it as the start parameter for ordered lists." - (pcase type - (`ordered - (format "
      " - (if arg1 (format " start=\"%d\"" arg1) ""))) - (`unordered "
        ") - (`descriptive "
        "))) + (let* ((html-type (plist-get org-html-plain-list-type type)) + (html-class (format "org-%s" html-type))) + (format "<%s %s>" + html-type + (org-html--make-attribute-string + (plist-put attributes :class + (org-trim + (mapconcat 'identity + (list html-class (plist-get attributes :class)) + " "))))))) (defun org-html-end-plain-list (type) "Insert the end of the HTML list depending on TYPE." - (pcase type - (`ordered "
    ") - (`unordered "") - (`descriptive ""))) + (format "" (plist-get org-html-plain-list-type type))) (defun org-html-plain-list (plain-list contents _info) "Transcode a PLAIN-LIST element from Org to HTML. CONTENTS is the contents of the list. INFO is a plist holding contextual information." - (let ((type (org-element-property :type plain-list))) + (let* ((type (org-element-property :type plain-list)) + (attributes (org-export-read-attribute :attr_html plain-list))) (format "%s\n%s%s" - (org-html-begin-plain-list type) - contents (org-html-end-plain-list type)))) + (org-html-begin-plain-list type attributes) + contents + (org-html-end-plain-list type)))) ;;;; Plain Text -- 2.11.1