From 9109dc13ea692e9d89e72bdde4280f6342397079 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 8 Oct 2012 14:20:56 +0200 Subject: [PATCH] org-e-publish: Move publishing functions into back-end libraries * contrib/lisp/org-e-ascii.el (org-e-ascii-publish-to-ascii, org-e-ascii-publish-to-latin1, org-e-ascii-publish-to-utf8): New functions. * contrib/lisp/org-e-html.el (org-e-html-publish-to-html): New function. * contrib/lisp/org-e-latex.el (org-e-latex-publish-to-latex, org-e-latex-publish-to-pdf): New functions. * contrib/lisp/org-e-publish.el (org-e-publish-org-to-latex, org-e-publish-org-to-pdf, org-e-publish-org-to-ascii, org-e-publish-org-to-latin1, org-e-publish-org-to-utf8, org-e-publish-org-to-html): Remove functions. Each back-end can define its own publishing functions. This patch avoids to clutter org-e-publish.el. --- contrib/lisp/org-e-ascii.el | 39 +++++++++++++++- contrib/lisp/org-e-html.el | 14 +++++- contrib/lisp/org-e-latex.el | 30 ++++++++++++- contrib/lisp/org-e-publish.el | 84 +---------------------------------- 4 files changed, 81 insertions(+), 86 deletions(-) diff --git a/contrib/lisp/org-e-ascii.el b/contrib/lisp/org-e-ascii.el index 5ebd3b0ae..c5759b7e8 100644 --- a/contrib/lisp/org-e-ascii.el +++ b/contrib/lisp/org-e-ascii.el @@ -37,6 +37,7 @@ (eval-when-compile (require 'cl)) (require 'org-export) +(require 'org-e-publish) (declare-function aa2u "ext:ascii-art-to-unicode" ()) @@ -1794,7 +1795,7 @@ This function only applies to `e-ascii' back-end. See -;;; Interactive function +;;; End-user functions ;;;###autoload (defun org-e-ascii-export-as-ascii @@ -1864,6 +1865,42 @@ Return output file's name." (org-export-to-file 'e-ascii outfile subtreep visible-only body-only ext-plist))) +;;;###autoload +(defun org-e-ascii-publish-to-ascii (plist filename pub-dir) + "Publish an Org file to ASCII. + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + (org-e-publish-org-to + 'e-ascii filename ".txt" `(:ascii-charset ascii ,@plist) pub-dir)) + +;;;###autoload +(defun org-e-ascii-publish-to-latin1 (plist filename pub-dir) + "Publish an Org file to Latin-1. + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + (org-e-publish-org-to + 'e-ascii filename ".txt" `(:ascii-charset latin1 ,@plist) pub-dir)) + +;;;###autoload +(defun org-e-ascii-publish-to-utf8 (plist filename pub-dir) + "Publish an org file to UTF-8. + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + (org-e-publish-org-to + 'e-ascii filename ".txt" `(:ascii-charset utf-8 ,@plist) pub-dir)) + (provide 'org-e-ascii) ;;; org-e-ascii.el ends here diff --git a/contrib/lisp/org-e-html.el b/contrib/lisp/org-e-html.el index 87741b0f8..fcdf006a6 100644 --- a/contrib/lisp/org-e-html.el +++ b/contrib/lisp/org-e-html.el @@ -36,6 +36,7 @@ ;;; Dependencies (require 'org-export) +(require 'org-e-publish) (require 'format-spec) (eval-when-compile (require 'cl) (require 'table)) @@ -2806,7 +2807,7 @@ contextual information." (buffer-substring-no-properties (point-min) (point-max))))) -;;; Interactive functions +;;; End-user functions ;;;###autoload (defun org-e-html-export-as-html @@ -2880,6 +2881,17 @@ Return output file's name." (org-export-to-file 'e-html file subtreep visible-only body-only ext-plist))) +;;;###autoload +(defun org-e-html-publish-to-html (plist filename pub-dir) + "Publish an org file to HTML. + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + (org-e-publish-org-to 'e-html filename ".html" plist pub-dir)) + ;;; FIXME diff --git a/contrib/lisp/org-e-latex.el b/contrib/lisp/org-e-latex.el index b90a097cd..80b8ddbfb 100644 --- a/contrib/lisp/org-e-latex.el +++ b/contrib/lisp/org-e-latex.el @@ -37,6 +37,7 @@ (eval-when-compile (require 'cl)) (require 'org-export) +(require 'org-e-publish) (defvar org-export-latex-default-packages-alist) (defvar org-export-latex-packages-alist) @@ -2556,7 +2557,7 @@ contextual information." -;;; Interactive functions +;;; End-user functions ;;;###autoload (defun org-e-latex-export-as-latex @@ -2734,6 +2735,33 @@ none." (setq errors (concat errors " " (cdr latex-error))))) (and (org-string-nw-p errors) (org-trim errors))))))) +;;;###autoload +(defun org-e-latex-publish-to-latex (plist filename pub-dir) + "Publish an Org file to LaTeX. + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + (org-e-publish-org-to 'e-latex filename ".tex" plist pub-dir)) + +;;;###autoload +(defun org-e-latex-publish-to-pdf (plist filename pub-dir) + "Publish an Org file to PDF (via LaTeX). + +FILENAME is the filename of the Org file to be published. PLIST +is the property list for the given project. PUB-DIR is the +publishing directory. + +Return output file name." + ;; Unlike to `org-e-latex-publish-to-latex', PDF file is generated + ;; in working directory and then moved to publishing directory. + (org-e-publish-attachment + plist + (org-e-latex-compile (org-e-publish-org-to 'e-latex filename ".tex" plist)) + pub-dir)) + (provide 'org-e-latex) ;;; org-e-latex.el ends here diff --git a/contrib/lisp/org-e-publish.el b/contrib/lisp/org-e-publish.el index 49e35516d..efe207325 100644 --- a/contrib/lisp/org-e-publish.el +++ b/contrib/lisp/org-e-publish.el @@ -538,7 +538,7 @@ matching filenames." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;;; Pluggable publishing back-end functions +;;; Tools for publishing functions in back-ends (defun org-e-publish-org-to (backend filename extension plist &optional pub-dir) "Publish an Org file to a specified back-end. @@ -574,88 +574,6 @@ Return output file name." (unless visitingp (kill-buffer work-buffer))))) (defvar project-plist) -(defun org-e-publish-org-to-latex (plist filename pub-dir) - "Publish an Org file to LaTeX. - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (require 'org-e-latex nil t) - (org-e-publish-org-to 'e-latex filename ".tex" plist pub-dir)) - -(defun org-e-publish-org-to-pdf (plist filename pub-dir) - "Publish an Org file to PDF \(via LaTeX). - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (require 'org-e-latex nil t) - ;; Unlike to `org-e-publish-org-to-latex', PDF file is generated in - ;; working directory and then moved to publishing directory. - (org-e-publish-attachment - plist - (org-e-latex-compile (org-e-publish-org-to 'e-latex filename ".tex" plist)) - pub-dir)) - -(defun org-e-publish-org-to-html (plist filename pub-dir) - "Publish an org file to HTML. - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (require 'org-e-html nil t) - (org-e-publish-org-to 'e-html filename ".html" plist pub-dir)) - -;; TODO: Not implemented yet. -;; (defun org-e-publish-org-to-org (plist filename pub-dir) -;; "Publish an org file to HTML. -;; -;; FILENAME is the filename of the Org file to be published. PLIST -;; is the property list for the given project. PUB-DIR is the -;; publishing directory. -;; -;; Return output file name." -;; (org-e-publish-org-to "org" plist filename pub-dir)) - -(defun org-e-publish-org-to-ascii (plist filename pub-dir) - "Publish an Org file to ASCII. - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (require 'org-e-ascii nil t) - (org-e-publish-org-to - 'e-ascii filename ".txt" `(:ascii-charset ascii ,@plist) pub-dir)) - -(defun org-e-publish-org-to-latin1 (plist filename pub-dir) - "Publish an Org file to Latin-1. - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (org-e-publish-org-to - 'e-ascii filename ".txt" `(:ascii-charset latin1 ,@plist) pub-dir)) - -(defun org-e-publish-org-to-utf8 (plist filename pub-dir) - "Publish an org file to UTF-8. - -FILENAME is the filename of the Org file to be published. PLIST -is the property list for the given project. PUB-DIR is the -publishing directory. - -Return output file name." - (org-e-publish-org-to - 'e-ascii filename ".txt" `(:ascii-charset utf-8 ,@plist) pub-dir)) (defun org-e-publish-attachment (plist filename pub-dir) "Publish a file with no transformation of any kind.