emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] org-export-generic table exporting
@ 2012-02-08  4:44 Tom Alexander
  2012-02-15 22:55 ` O[PATCH] " Wes Hardaker
  0 siblings, 1 reply; 4+ messages in thread
From: Tom Alexander @ 2012-02-08  4:44 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 743 bytes --]

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

[-- Attachment #2: table_exporting.patch --]
[-- Type: text/x-patch, Size: 5621 bytes --]

From 6e072d97d056cb61fc7810b8b9fea43d3cf9489e Mon Sep 17 00:00:00 2001
From: Tom Alexander <craftkiller@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


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-03-20 16:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-08  4:44 [PATCH] org-export-generic table exporting Tom Alexander
2012-02-15 22:55 ` O[PATCH] " Wes Hardaker
2012-03-09  3:57   ` Tom Alexander
2012-03-20 16:03   ` Bastien

Code repositories for project(s) associated with this inbox:

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).