;; works (it is derived from ox-html.)
(require 'ox-html)
+(eval-when-compile (require 'cl))
(org-export-define-derived-backend deck html
:menu-entry
(: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)
: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
"<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))
"</?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>"
(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)
: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
: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-alt-title headline info) info)
+ (and tags " ") (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"))))
("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
;; 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