From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: suggesting a new function org-export-string Date: Sun, 17 Oct 2010 15:22:51 -0600 Message-ID: <87k4lg4iqc.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from [140.186.70.92] (port=53499 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1P7agz-0001W6-Km for emacs-orgmode@gnu.org; Sun, 17 Oct 2010 17:22:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1P7agx-0005wu-Oj for emacs-orgmode@gnu.org; Sun, 17 Oct 2010 17:22:57 -0400 Received: from mail-pv0-f169.google.com ([74.125.83.169]:58875) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1P7agx-0005wb-EU for emacs-orgmode@gnu.org; Sun, 17 Oct 2010 17:22:55 -0400 Received: by pvf33 with SMTP id 33so57199pvf.0 for ; Sun, 17 Oct 2010 14:22:54 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Org Mode --=-=-= The attached patch adds a new functions org-export-as-string. ,---- | org-export-string is a Lisp function in `org-exp.el'. | | (org-export-string STRING FMT &optional DIR) | | Export STRING to FMT using existing export facilities. | During export STRING is saved to a temporary file whose location | could vary. Optional argument DIR can be used to force the | directory in which the temporary file is created during export | which can be useful for resolving relative paths. Dir defaults | to the value of `temporary-file-directory'. `---- This function should be useful in user code, and can already reduce the amount of code in ob-org.el and org-mime.el. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-org-export-string-exports-a-string-of-org-mode-marku.patch >From e51017e4d7051aad31384a470f0a695dca0d6716 Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Sun, 17 Oct 2010 15:17:13 -0600 Subject: [PATCH] org-export-string -- exports a string of org-mode markup text * lisp/org-exp.el (org-export-string): new function org-export-string can be used to convert a string of test in org-mode markup to a specified format * contrib/lisp/org-mime.el (org-mime-htmlize): now using new org-export-string function for exportation * lisp/ob-org.el (org-babel-execute:org): now using new org-export-string function for exportation --- contrib/lisp/org-mime.el | 20 +------------------- lisp/ob-org.el | 27 ++++----------------------- lisp/org-exp.el | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 42 deletions(-) diff --git a/contrib/lisp/org-mime.el b/contrib/lisp/org-mime.el index 109ec69..0537b9d 100644 --- a/contrib/lisp/org-mime.el +++ b/contrib/lisp/org-mime.el @@ -175,7 +175,7 @@ export that region, otherwise export the entire body." (point-max))) (raw-body (buffer-substring html-start html-end)) (tmp-file (make-temp-name (expand-file-name "mail" temporary-file-directory))) - (body (org-mime-org-export "org" raw-body tmp-file)) + (body (org-export-string raw-body "org" (file-name-directory tmp-file))) ;; because we probably don't want to skip part of our mail (org-export-skip-text-before-1st-heading nil) ;; because we probably don't want to export a huge style file @@ -198,24 +198,6 @@ export that region, otherwise export the entire body." (insert (org-mime-multipart body html) (mapconcat 'identity html-images "\n"))))) -(defun org-mime-org-export (fmt body tmp-file) - "Org-Export BODY to format FMT with the file name set to -TMP-FILE during export." - (save-excursion - (with-temp-buffer - (insert org-mime-default-header) - (insert body) - (write-file tmp-file) - (org-load-modules-maybe) - (unless org-local-vars - (setq org-local-vars (org-get-local-variables))) - (substring - (eval ;; convert to fmt -- mimicing `org-run-like-in-org-mode' - (list 'let org-local-vars - (list (intern (concat "org-export-as-" fmt)) - nil nil nil ''string t))) - (if (string= fmt "org") (length org-mime-default-header) 0))))) - (defun org-mime-apply-html-hook (html) (if org-mime-html-hook (with-temp-buffer diff --git a/lisp/ob-org.el b/lisp/ob-org.el index 8b45de8..dcc2ee1 100644 --- a/lisp/ob-org.el +++ b/lisp/ob-org.el @@ -30,8 +30,7 @@ ;;; Code: (require 'ob) -(declare-function org-load-modules-maybe "org" (&optional force)) -(declare-function org-get-local-variables "org" ()) +(declare-function org-export-string "org-exp" (string fmt &optional dir)) (defvar org-babel-default-header-args:org '((:results . "raw silent") (:exports . "results")) @@ -50,29 +49,11 @@ This function is called by `org-babel-execute-src-block'." (let ((result-params (split-string (or (cdr (assoc :results params)) ""))) (body (replace-regexp-in-string "^," "" body))) (cond - ((member "latex" result-params) (org-babel-org-export body "latex")) - ((member "html" result-params) (org-babel-org-export body "html")) - ((member "ascii" result-params) (org-babel-org-export body "ascii")) + ((member "latex" result-params) (org-export-string body "latex")) + ((member "html" result-params) (org-export-string body "html")) + ((member "ascii" result-params) (org-export-string body "ascii")) (t body)))) -(defvar org-local-vars) -(defun org-babel-org-export (body fmt) - "Export BODY to FMT using Org-mode's export facilities. " - (when (get-buffer " org-mode-tmp") - (error "Nested call to org-export: from org code block exporting results")) - (let ((tmp-file (org-babel-temp-file "org-"))) - (with-temp-buffer - (insert org-babel-org-default-header) - (insert body) - (write-file tmp-file) - (org-load-modules-maybe) - (unless org-local-vars - (setq org-local-vars (org-get-local-variables))) - (eval ;; convert to fmt -- mimicking `org-run-like-in-org-mode' - (list 'let org-local-vars - (list (intern (concat "org-export-as-" fmt)) - nil nil nil ''string t)))))) - (defun org-babel-prep-session:org (session params) "Return an error because org does not support sessions." (error "Org does not support sessions")) diff --git a/lisp/org-exp.el b/lisp/org-exp.el index 9b455b1..b86b0f8 100644 --- a/lisp/org-exp.el +++ b/lisp/org-exp.el @@ -2587,6 +2587,28 @@ command." (defvar org-export-htmlized-org-css-url) ;; defined in org-html.el +(defun org-export-string (string fmt &optional dir) + "Export STRING to FMT using existing export facilities. +During export STRING is saved to a temporary file whose location +could vary. Optional argument DIR can be used to force the +directory in which the temporary file is created during export +which can be useful for resolving relative paths. Dir defaults +to the value of `temporary-file-directory'." + (let ((temporary-file-directory (or dir temporary-file-directory)) + (tmp-file (make-temp-file "org-"))) + (unwind-protect + (with-temp-buffer + (insert body) + (write-file tmp-file) + (org-load-modules-maybe) + (unless org-local-vars + (setq org-local-vars (org-get-local-variables))) + (eval ;; convert to fmt -- mimicing `org-run-like-in-org-mode' + (list 'let org-local-vars + (list (intern (concat "org-export-as-" fmt)) + nil nil nil ''string t)))) + (delete-file tmp-file)))) + ;;;###autoload (defun org-export-as-org (arg &optional hidden ext-plist to-buffer body-only pub-dir) -- 1.7.0.4 --=-=-= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --=-=-=--