emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] Update to slideshows for changed ox-html functions
@ 2013-02-26 22:56 Rick Frankel
  2013-02-26 23:17 ` Nicolas Goaziou
  0 siblings, 1 reply; 2+ messages in thread
From: Rick Frankel @ 2013-02-26 22:56 UTC (permalink / raw)
  To: emacs-orgmode

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

Attached is a patch to fix a couple of bugs which slipped by during
the re-integration. Also, a fix for the renamed functions in ox-html.

rick

[-- Attachment #2: 0001-Slideshow-bugfixes-and-sync-with-ox-html-function-na.patch --]
[-- Type: text/plain, Size: 6489 bytes --]

From daf83f8743cf512185e8ba2168571759bf51eac4 Mon Sep 17 00:00:00 2001
From: Rick Frankel <emacs@rickster.com>
Date: Tue, 26 Feb 2013 14:26:27 -0500
Subject: [PATCH] Slideshow bugfixes and sync with ox-html function name
 changes.

* contrib/lisp/ox-deck.el: Default org-deck-directories to "./deck.js".
(org-deck-toc): Sync w/ ox-html name change (org-html--toc-text.)
(org-deck-inner-template): Remove duplicate toc generation code.
* contrib/lisp/ox-s5.el: Add inner template to fix duplicate content
  div error.
(org-s5-toc): Sync w/ ox-html name change (org-html--toc-text) and
make toc entries static since s5 doesn't support deep linking.
---
 contrib/lisp/ox-deck.el | 21 +++++++--------------
 contrib/lisp/ox-s5.el   | 35 ++++++++++++++++++++++++++++++-----
 2 files changed, 37 insertions(+), 19 deletions(-)

diff --git a/contrib/lisp/ox-deck.el b/contrib/lisp/ox-deck.el
index a5327e9..5d25369 100644
--- a/contrib/lisp/ox-deck.el
+++ b/contrib/lisp/ox-deck.el
@@ -37,6 +37,7 @@
 ;; works (it is derived from ox-html.)
 
 (require 'ox-html)
+(eval-when-compile (require 'cl))
 
 (org-export-define-derived-backend deck html
   :menu-entry
@@ -62,9 +63,7 @@
    (:deck-include-extensions "DECK_INCLUDE_EXTENSIONS" nil
                              org-deck-include-extensions split)
    (:deck-exclude-extensions "DECK_EXCLUDE_EXTENSIONS" nil
-                             org-deck-exclude-extensions split)
-   (:deck-directories "DECK_DIRECTORIES" nil
-                      org-deck-directories split))
+                             org-deck-exclude-extensions split))
   :translate-alist
   ((headline . org-deck-headline)
    (inner-template . org-deck-inner-template)
@@ -76,7 +75,7 @@
   :tag "Org Export DECK"
   :group 'org-export-html)
 
-(defcustom org-deck-directories nil
+(defcustom org-deck-directories '("./deck.js")
   "Directories to search for deck.js components (jquery,
 modernizr; core, extensions and themes directories.)"
   :group 'org-export-deck
@@ -250,7 +249,7 @@ Note that the wrapper div must include the class \"slide\"."
    "<div id=\"table-of-contents\" class=\"slide\">\n"
    (format "<h2>%s</h2>\n"
            (org-html--translate "Table of Contents" info))
-   (org-html-toc-text
+   (org-html--toc-text
     (mapcar
      (lambda (headline)
        (let* ((class (org-element-property :HTML_CONTAINER_CLASS headline))
@@ -269,7 +268,7 @@ Note that the wrapper div must include the class \"slide\"."
                  "</?a[^>]*>" ""
                  (org-export-data
                   (org-element-property :title headline) info)))))
-         (list
+         (cons
           (if (and class (string-match-p "\\<slide\\>" class))
               (format
                "<a href='#outline-container-%s'>%s</a>"
@@ -319,17 +318,11 @@ Note that the wrapper div must include the class \"slide\"."
     (list :scripts (nreverse scripts) :sheets (nreverse sheets)
           :snippets snippets)))
 
-(defun org-html-inner-template (contents info)
+(defun org-deck-inner-template (contents info)
   "Return body of document string after HTML conversion.
 CONTENTS is the transcoded contents string.  INFO is a plist
 holding export options."
-  (concat
-   ;; Table of contents.
-   (let ((depth (plist-get info :with-toc)))
-     (when depth (org-deck-toc depth info)))
-   ;; Document contents.
-   contents
-   "\n"))
+  (concat contents "\n"))
 
 (defun org-deck-headline (headline contents info)
   (let ((org-html-toplevel-hlevel 2)
diff --git a/contrib/lisp/ox-s5.el b/contrib/lisp/ox-s5.el
index 9b140c5..1e76324 100644
--- a/contrib/lisp/ox-s5.el
+++ b/contrib/lisp/ox-s5.el
@@ -74,6 +74,7 @@
   :translate-alist
   ((headline . org-s5-headline)
    (plain-list . org-s5-plain-list)
+   (inner-template . org-s5-inner-template)
    (template . org-s5-template)))
 
 (defgroup org-export-s5 nil
@@ -150,20 +151,37 @@ Note that the wrapper div must include the class \"slide\"."
   :type 'string)
 
 
+(defun org-s5--format-toc-headline (headline info)
+  "Return an appropriate table of contents entry for HEADLINE.
+Note that (currently) the S5 exporter does not support deep links, 
+so the table of contents is not \"active\".
+INFO is a plist used as a communication channel."
+  (let* ((headline-number (org-export-get-headline-number headline info))
+	 (section-number
+	  (and (not (org-export-low-level-p headline info))
+	       (org-export-numbered-headline-p headline info)
+	       (concat (mapconcat 'number-to-string headline-number ".") ". ")))
+	 (tags (and (eq (plist-get info :with-tags) t)
+		    (org-export-get-tags headline info))))
+    (concat section-number
+	    (org-export-data
+	     (org-export-get-optional-title headline info) info)
+	    (and tags "&nbsp;&nbsp;&nbsp;") (org-html--tags tags))))
+
 (defun org-s5-toc (depth info)
   (let* ((headlines (org-export-collect-headlines info depth))
 	 (toc-entries
-	  (loop for headline in headlines collect
-		(list (org-html-format-headline--wrap
-		       headline info 'org-html-format-toc-headline)
-		      (org-export-get-relative-level headline info)))))
+	  (mapcar (lambda (headline)
+		    (cons (org-s5--format-toc-headline headline info)
+			  (org-export-get-relative-level headline info)))
+		  (org-export-collect-headlines info depth))))
     (when toc-entries
       (concat
        "<div id=\"table-of-contents\" class=\"slide\">\n"
        (format "<h1>%s</h1>\n"
 	       (org-html--translate "Table of Contents" info))
        "<div id=\"text-table-of-contents\">"
-       (org-html-toc-text toc-entries)
+       (org-html--toc-text toc-entries)
        "</div>\n"
        "</div>\n"))))
 
@@ -240,6 +258,12 @@ which will make the list into a \"build\"."
    ("date"   . ,(nth 0 (plist-get info :date)))
    ("file"   . ,(plist-get info :input-file))))
 
+(defun org-s5-inner-template (contents info)
+  "Return body of document string after HTML conversion.
+CONTENTS is the transcoded contents string.  INFO is a plist
+holding export options."
+  (concat contents "\n"))
+
 (defun org-s5-template (contents info)
   "Return complete document string after HTML conversion.
 CONTENTS is the transcoded contents string.  INFO is a plist
@@ -270,6 +294,7 @@ holding export options."
     ;; title page
     (org-fill-template
      org-s5-title-page-template (org-s5-template-alist info))
+    ;; table of contents.
     (let ((depth (plist-get info :with-toc)))
       (when depth (org-s5-toc depth info)))
     contents
-- 
1.8.0


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

end of thread, other threads:[~2013-02-26 23:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-26 22:56 [PATCH] Update to slideshows for changed ox-html functions Rick Frankel
2013-02-26 23:17 ` Nicolas Goaziou

Code repositories for project(s) associated with this public 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).