optionally export additional information with call lines

* lisp/ob-exp.el (org-babel-exp-call-line-template): Control export of
  additional call line information.
  (org-babel-exp-non-block-elements): Fancier call line export.
* testing/examples/babel.org (an): Example data to test new call line
  export.
* testing/lisp/test-ob-exp.el (ob-exp/export-call-line-information):
  Test new call line export.
This commit is contained in:
Eric Schulte 2012-01-23 12:52:57 -07:00
parent 1d99fd7010
commit 527e6844cc
3 changed files with 50 additions and 16 deletions

View File

@ -115,6 +115,23 @@ none ----- do not display either code or results upon export"
(nth 1 info))) (nth 1 info)))
(org-babel-exp-do-export info 'block hash))))) (org-babel-exp-do-export info 'block hash)))))
(defcustom org-babel-exp-call-line-template
""
"Template used to export call lines.
This template may be customized to include the call line name
with any export markup. The template is filled out using
`org-fill-template', and the following %keys may be used.
line --- call line
An example value would be \"\\n: call: %line\" to export the call line
wrapped in a verbatim environment.
Note: the results are inserted separately after the contents of
this template."
:group 'org-babel
:type 'string)
(defvar org-babel-default-lob-header-args) (defvar org-babel-default-lob-header-args)
(defun org-babel-exp-non-block-elements (start end) (defun org-babel-exp-non-block-elements (start end)
"Process inline source and call lines between START and END for export." "Process inline source and call lines between START and END for export."
@ -160,22 +177,24 @@ none ----- do not display either code or results upon export"
(inlinep (match-string 11)) (inlinep (match-string 11))
(inline-start (match-end 11)) (inline-start (match-end 11))
(inline-end (match-end 0)) (inline-end (match-end 0))
(rep (let ((lob-info (org-babel-lob-get-info))) (results (save-match-data
(save-match-data (org-babel-exp-do-export
(org-babel-exp-do-export (list "emacs-lisp" "results"
(list "emacs-lisp" "results" (org-babel-merge-params
(org-babel-merge-params org-babel-default-header-args
org-babel-default-header-args org-babel-default-lob-header-args
org-babel-default-lob-header-args (org-babel-params-from-properties)
(org-babel-params-from-properties) (org-babel-parse-header-arguments
(org-babel-parse-header-arguments (org-babel-clean-text-properties
(org-babel-clean-text-properties (concat ":var results="
(concat ":var results=" (mapconcat #'identity
(mapconcat #'identity (butlast lob-info)
(butlast lob-info) " ")))))
" "))))) "" nil (car (last lob-info)))
"" nil (car (last lob-info))) 'lob)))
'lob))))) (rep (org-fill-template
org-babel-exp-call-line-template
`(("line" . ,(nth 0 lob-info))))))
(if inlinep (if inlinep
(save-excursion (save-excursion
(goto-char inline-start) (goto-char inline-start)

View File

@ -334,3 +334,9 @@ Fifth
#+begin_src emacs-lisp #+begin_src emacs-lisp
(push 5 *evaluation-collector*) (push 5 *evaluation-collector*)
#+end_src #+end_src
* exporting more than just results from a call line
:PROPERTIES:
:ID: bec63a04-491e-4caa-97f5-108f3020365c
:END:
Here is a call line with more than just the results exported.
#+call: double(8)

View File

@ -231,6 +231,15 @@ elements in the final html."
(org-export-as-ascii nil nil nil 'string) (org-export-as-ascii nil nil nil 'string)
(should (equal '(5 4 3 2 1) *evaluation-collector*))))) (should (equal '(5 4 3 2 1) *evaluation-collector*)))))
(ert-deftest ob-exp/export-call-line-information ()
(org-test-at-id "bec63a04-491e-4caa-97f5-108f3020365c"
(org-narrow-to-subtree)
(let* ((org-babel-exp-call-line-template "\n: call: %line special-token")
(html (org-export-as-html nil nil nil 'string t)))
(should (string-match "double" html))
(should (string-match "16" html))
(should (string-match "special-token" html)))))
(provide 'test-ob-exp) (provide 'test-ob-exp)
;;; test-ob-exp.el ends here ;;; test-ob-exp.el ends here