emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] [PATCH] org-html.el: Fix export of table.el tables.


From: Jambunathan K
Subject: [O] [PATCH] org-html.el: Fix export of table.el tables.
Date: Mon, 25 Apr 2011 04:12:23 +0530
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (windows-nt)

Changelog
---------

org-html.el: Fix export of table.el tables.

* lisp/org-html.el (org-export-as-html): Don't expand non-data
lines of table.el tables.
(org-html-expand): Removed the (buggy) test for non-data lines
in table.el tables. The test is now done as part of
org-export-as-html.
(org-format-table-table-html-using-table-generate-source):
Added test for spanning of cells in table.el tables using
table.el's own library routine. Optionlly Suppress export of
simple table.el tables.
(org-format-table-html): Removed the (buggy) test for spanned
table.el tables. The test is now done as part of
org-format-table-table-html-using-table-generate-source.


>From 3c8ff02efa0d2a4a08fe5341b9faa1de193048e9 Mon Sep 17 00:00:00 2001
From: Jambunathan K <address@hidden>
Date: Mon, 25 Apr 2011 03:35:03 +0530
Subject: [PATCH] org-html: Fix export of table.el tables.

* lisp/org-html.el (org-export-as-html): Don't expand non-data
lines of table.el tables.
(org-html-expand): Removed the (buggy) test for non-data lines
in table.el tables. The test is now done as part of
org-export-as-html.
(org-format-table-table-html-using-table-generate-source):
Added test for spanning of cells in table.el tables using
table.el's own library routine. Optionlly Suppress export of
simple table.el tables.
(org-format-table-html): Removed the (buggy) test for spanned
table.el tables. The test is now done as part of
org-format-table-table-html-using-table-generate-source.
---
 lisp/org-html.el |   72 +++++++++++++++++++++++++++--------------------------
 1 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/lisp/org-html.el b/lisp/org-html.el
index 7a4564d..29bb825 100644
--- a/lisp/org-html.el
+++ b/lisp/org-html.el
@@ -1543,6 +1543,7 @@ lang=\"%s\" xml:lang=\"%s\">
          ;; handle @<..> HTML tags (replace "@&gt;..&lt;" by "<..>")
          ;; Also handle sub_superscripts and checkboxes
          (or (string-match org-table-hline-regexp line)
+             (string-match "^[ \t]*\\([+]-\\||[ ]\\)[-+ |]*[+|][ \t]*$" line)
              (setq line (org-html-expand line)))
 
          ;; Format the links
@@ -1888,24 +1889,13 @@ NO-CSS is passed to the exporter."
   (if (string-match "^[ \t]*|" (car lines))
       ;; A normal org table
       (org-format-org-table-html lines nil no-css)
-    ;; Table made by table.el - test for spanning
-    (let* ((hlines (delq nil (mapcar
-                             (lambda (x)
-                               (if (string-match "^[ \t]*\\+-" x) x
-                                 nil))
-                             lines)))
-          (first (car hlines))
-          (ll (and (string-match "\\S-+" first)
-                   (match-string 0 first)))
-          (re (concat "^[ \t]*" (regexp-quote ll)))
-          (spanning (delq nil (mapcar (lambda (x) (not (string-match re x)))
-                                      hlines))))
-      (if (and (not spanning)
-              (not org-export-prefer-native-exporter-for-tables))
-         ;; We can use my own converter with HTML conversions
-         (org-format-table-table-html lines)
-       ;; Need to use the code generator in table.el, with the original text.
-       (org-format-table-table-html-using-table-generate-source olines)))))
+    ;; Table made by table.el 
+    (or (org-format-table-table-html-using-table-generate-source
+        olines (not org-export-prefer-native-exporter-for-tables))
+       ;; We are here only when table.el table has NO col or row
+       ;; spanning and the user prefers using org's own converter for
+       ;; exporting of such simple table.el tables.
+       (org-format-table-table-html lines))))
 
 (defvar org-table-number-fraction) ; defined in org-table.el
 (defun org-format-org-table-html (lines &optional splice no-css)
@@ -2116,10 +2106,20 @@ But it has the disadvantage, that no cell- or 
row-spanning is allowed."
     (setq html (concat html "</table>\n"))
     html))
 
-(defun org-format-table-table-html-using-table-generate-source (lines)
+(defun org-format-table-table-html-using-table-generate-source (lines
+                                                               &optional
+                                                               spanned-only)
   "Format a table into html, using `table-generate-source' from table.el.
-This has the advantage that cell- or row-spanning is allowed.
-But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
+Use SPANNED-ONLY to suppress exporting of simple table.el tables.
+
+When SPANNED-ONLY is nil, all table.el tables are exported.  When
+SPANNED-ONLY is non-nil, only tables with either row or column
+spans are exported.
+
+This routine returns the generated source or nil as appropriate.
+
+Refer docstring of `org-export-prefer-native-exporter-for-tables'
+for further information."
   (require 'table)
   (with-current-buffer (get-buffer-create " org-tmp1 ")
     (erase-buffer)
@@ -2128,10 +2128,14 @@ But it has the disadvantage, that Org-mode's HTML 
conversions cannot be used."
     (if (not (re-search-forward "|[^+]" nil t))
        (error "Error processing table"))
     (table-recognize-table)
-    (with-current-buffer (get-buffer-create " org-tmp2 ") (erase-buffer))
-    (table-generate-source 'html " org-tmp2 ")
-    (set-buffer " org-tmp2 ")
-    (buffer-substring (point-min) (point-max))))
+    (when (or (not spanned-only)
+             (let* ((dim (table-query-dimension))
+                    (c (nth 4 dim)) (r (nth 5 dim)) (cells (nth 6 dim)))
+               (not (= (* c r) cells))))
+      (with-current-buffer (get-buffer-create " org-tmp2 ") (erase-buffer))
+      (table-generate-source 'html " org-tmp2 ")
+      (set-buffer " org-tmp2 ")
+      (buffer-substring (point-min) (point-max)))))
 
 (defun org-export-splice-style (style extra)
   "Splice EXTRA into STYLE, just before \"</style>\"."
@@ -2234,16 +2238,14 @@ If there are links in the string, don't modify these."
   (let* ((re (concat org-bracket-link-regexp "\\|"
                     (org-re "[ \t]+\\(:[[:alnum:address@hidden:]+:\\)[ 
\t]*$")))
         m s l res)
-    (if (string-match "^[ \t]*\\+-[-+]*\\+[ \t]*$" string)
-       string
-      (while (setq m (string-match re string))
-       (setq s (substring string 0 m)
-             l (match-string 0 string)
-             string (substring string (match-end 0)))
-       (push (org-html-do-expand s) res)
-       (push l res))
-      (push (org-html-do-expand string) res)
-      (apply 'concat (nreverse res)))))
+    (while (setq m (string-match re string))
+      (setq s (substring string 0 m)
+           l (match-string 0 string)
+           string (substring string (match-end 0)))
+      (push (org-html-do-expand s) res)
+      (push l res))
+    (push (org-html-do-expand string) res)
+    (apply 'concat (nreverse res))))
 
 (defun org-html-do-expand (s)
   "Apply all active conversions to translate special ASCII to HTML."
-- 
1.7.2.3

Attachment: table-export.org
Description: table-export.org

-- 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]