I noticed that the org-export-generic.el script had options for basic features like checkboxes but not for tables, which were locked into ascii exporting. The attached patch creates many variables to allow users to change the table formatting (much like how there are variables like ":body-list-checkbox-done"). I also created a generic exporter named "mediawiki" that demonstrates use of the table exporting.
This is my first post to this mailing list, and my first ever contribution to an open-source project so I look forward to feedback and be kind when you point out any sort of mailing list etiquette I might have broken. -- Tom Alexander HS - Secretary Alpha Sigma Phi; Beta Psi Chapter Rensselaer Polytechnic Institute Class of 2013
From 6e072d97d056cb61fc7810b8b9fea43d3cf9489e Mon Sep 17 00:00:00 2001 From: Tom Alexander <craftkil...@gmail.com> Date: Tue, 7 Feb 2012 20:15:29 -0500 Subject: [PATCH] Added variables for exporting tables including: - body-table-start - body-table-end - body-table-row-start - body-table-row-end - body-table-cell-start - body-table-cell-end - body-table-first-cell-start - body-table-interior-cell-start - body-table-interior-cell-end - body-table-last-cell-end - body-table-hline-start - body-table-hline-end Added a mediawiki exporter which uses the new table exporting --- contrib/lisp/org-export-generic.el | 87 +++++++++++++++++++++++++++++++++-- 1 files changed, 82 insertions(+), 5 deletions(-) diff --git a/contrib/lisp/org-export-generic.el b/contrib/lisp/org-export-generic.el index 436badc..9e21992 100644 --- a/contrib/lisp/org-export-generic.el +++ b/contrib/lisp/org-export-generic.el @@ -325,6 +325,51 @@ in this way, it will be wrapped." :body-bullet-list-prefix ("* " "** " "*** " "**** " "***** ") ) ;; + ;; mediawiki + ;; + ("mediawiki" + :file-suffix ".txt" + :key-binding ?m + + :header-prefix "" + :header-suffix "" + + :title-format "= %s =\n" + + :date-export nil + + :toc-export nil + + :body-header-section-numbers nil + :body-section-prefix "\n" + + :body-section-header-prefix ("= " "== " "=== " + "==== " "===== " "====== ") + :body-section-header-suffix (" =\n\n" " ==\n\n" " ===\n\n" + " ====\n\n" " =====\n\n" " ======\n\n") + + :body-line-export-preformated t ;; yes/no/maybe??? + :body-line-format "%s\n" + :body-line-wrap 75 + + :body-line-fixed-format " %s\n" + + :body-list-format "* %s\n" + :body-number-list-format "# %s\n" + + :body-bullet-list-prefix ("* " "** " "*** " "**** " "***** ") + :body-list-checkbox-todo "☐ " + :body-list-checkbox-done "☒ " + :body-table-start "{|" + :body-table-end "|}" + :body-table-cell-start "|" + :body-table-cell-end "\n" + :body-table-last-cell-end "|-" + :body-table-hline-start "" + + + ) + ;; ;; internet-draft .xml for xml2rfc exporter ;; ("ietfid" @@ -715,7 +760,34 @@ underlined headlines. The default is 3." (or (plist-get export-plist :body-list-checkbox-done-end) "")) (listcheckhalfend (or (plist-get export-plist :body-list-checkbox-half-end) "")) - (bodynewline-paragraph (plist-get export-plist :body-newline-paragraph)) + (bodytablestart + (or (plist-get export-plist :body-table-start) "")) + (bodytableend + (or (plist-get export-plist :body-table-end) "")) + (bodytablerowstart + (or (plist-get export-plist :body-table-row-start) "")) + (bodytablerowend + (or (plist-get export-plist :body-table-row-end) "")) + (bodytablecellstart + (or (plist-get export-plist :body-table-cell-start) "")) + (bodytablecellend + (or (plist-get export-plist :body-table-cell-end) "")) + (bodytablefirstcellstart + (or (plist-get export-plist :body-table-first-cell-start) "")) + (bodytableinteriorcellstart + (or (plist-get export-plist :body-table-interior-cell-start) "")) + (bodytableinteriorcellend + (or (plist-get export-plist :body-table-interior-cell-end) "")) + (bodytablelastcellend + (or (plist-get export-plist :body-table-last-cell-end) "")) + (bodytablehlinestart + (or (plist-get export-plist :body-table-hline-start) " \\1")) + (bodytablehlineend + (or (plist-get export-plist :body-table-hline-end) "")) + + + + (bodynewline-paragraph (plist-get export-plist :body-newline-paragraph)) (bodytextpre (plist-get export-plist :body-text-prefix)) (bodytextsuf (plist-get export-plist :body-text-suffix)) (bodylinewrap (plist-get export-plist :body-line-wrap)) @@ -1328,16 +1400,21 @@ REVERSE means to reverse the list if the plist match is a list (setq lines (org-table-clean-before-export lines))) ;; Get rid of the vertical lines except for grouping (let ((vl (org-colgroup-info-to-vline-list org-table-colgroup-info)) - rtn line vl1 start) + (rtn (list bodytablestart)) line vl1 start) (while (setq line (pop lines)) + (setq line (concat bodytablerowstart line)) (if (string-match org-table-hline-regexp line) (and (string-match "|\\(.*\\)|" line) - (setq line (replace-match " \\1" t nil line))) + (setq line (replace-match (concat bodytablehlinestart bodytablehlineend) t nil line))) (setq start 0 vl1 vl) + (if (string-match "|\\(.*\\)|" line) + (setq line (replace-match (concat bodytablefirstcellstart bodytablecellstart " \\1 " bodytablecellend bodytablelastcellend) t nil line))) (while (string-match "|" line start) - (setq start (match-end 0)) - (or (pop vl1) (setq line (replace-match " " t t line))))) + (setq start (+ (match-end 0) (length (concat bodytablecellend bodytableinteriorcellend bodytableinteriorcellstart bodytablecellstart)))) + (or (pop vl1) (setq line (replace-match (concat bodytablecellend bodytableinteriorcellend bodytableinteriorcellstart bodytablecellstart) t t line))))) + (setq line (concat line bodytablerowend)) (push line rtn)) + (setq rtn (cons bodytableend rtn)) (nreverse rtn)))) (defun org-colgroup-info-to-vline-list (info) -- 1.7.9