all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: Org Mode <emacs-orgmode@gnu.org>
Subject: Re: suggesting a new function org-export-string
Date: Fri, 22 Oct 2010 09:58:45 +0200	[thread overview]
Message-ID: <76FFDB8E-D5A5-4F46-8B92-9DDAFB5A6181@gmail.com> (raw)
In-Reply-To: <87k4lg4iqc.fsf@gmail.com>

Looks good to me.

- Carsten

On Oct 17, 2010, at 11:22 PM, Eric Schulte wrote:

> 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.
>
> From e51017e4d7051aad31384a470f0a695dca0d6716 Mon Sep 17 00:00:00 2001
> From: Eric Schulte <schulte.eric@gmail.com>
> 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
>
> _______________________________________________
> 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

- Carsten

  reply	other threads:[~2010-10-22  8:14 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-17 21:22 suggesting a new function org-export-string Eric Schulte
2010-10-22  7:58 ` Carsten Dominik [this message]
2010-10-22 12:49   ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=76FFDB8E-D5A5-4F46-8B92-9DDAFB5A6181@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.