* suggesting a new function org-export-string
@ 2010-10-17 21:22 Eric Schulte
2010-10-22 7:58 ` Carsten Dominik
0 siblings, 1 reply; 3+ messages in thread
From: Eric Schulte @ 2010-10-17 21:22 UTC (permalink / raw)
To: Org Mode
[-- Attachment #1: Type: text/plain, Size: 666 bytes --]
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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-export-string-exports-a-string-of-org-mode-marku.patch --]
[-- Type: text/x-diff, Size: 5854 bytes --]
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
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: suggesting a new function org-export-string
2010-10-17 21:22 suggesting a new function org-export-string Eric Schulte
@ 2010-10-22 7:58 ` Carsten Dominik
2010-10-22 12:49 ` Eric Schulte
0 siblings, 1 reply; 3+ messages in thread
From: Carsten Dominik @ 2010-10-22 7:58 UTC (permalink / raw)
To: Eric Schulte; +Cc: Org Mode
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: suggesting a new function org-export-string
2010-10-22 7:58 ` Carsten Dominik
@ 2010-10-22 12:49 ` Eric Schulte
0 siblings, 0 replies; 3+ messages in thread
From: Eric Schulte @ 2010-10-22 12:49 UTC (permalink / raw)
To: Carsten Dominik; +Cc: Org Mode
Applied, Thanks -- Eric
Carsten Dominik <carsten.dominik@gmail.com> writes:
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-10-22 13:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-17 21:22 suggesting a new function org-export-string Eric Schulte
2010-10-22 7:58 ` Carsten Dominik
2010-10-22 12:49 ` Eric Schulte
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.