org-mode/testing/examples/babel.org

207 lines
4.0 KiB
Org Mode
Raw Normal View History

#+Title: a collection of examples for Babel tests
* =:noweb= header argument expansion
:PROPERTIES:
:ID: eb1f6498-5bd9-45e0-9c56-50717053e7b7
:END:
#+source: noweb-example
#+begin_src emacs-lisp
(message "expanded")
#+end_src
#+begin_src emacs-lisp :noweb yes
;; noweb-yes-start
<<noweb-example>>
;; noweb-yes-end
#+end_src
#+begin_src emacs-lisp :noweb no
;; noweb-no-start
<<noweb-example>>
;; noweb-no-end
#+end_src
#+begin_src emacs-lisp :noweb tangle
;; noweb-tangle-start
<<noweb-example>>
;; noweb-tangle-end
#+end_src
* elisp forms in header arguments
:PROPERTIES:
:ID: 22d67284-bf14-4cdc-8319-f4bd876829d7
:var: prop=(+ 2 2)
:END:
#+begin_src emacs-lisp
prop
#+end_src
#+results:
: 4
* excessive id links on tangling
:PROPERTIES:
:ID: ef06fd7f-012b-4fde-87a2-2ae91504ea7e
:END:
** no, don't give me an ID
#+begin_src emacs-lisp :tangle no
(message "not to be tangled")
#+end_src
** yes, I'd love an ID
:PROPERTIES:
:ID: ae7b55ca-9ef2-4d30-bd48-da30e35fd0f3
:END:
#+begin_src emacs-lisp :tangle no
(message "for tangling")
#+end_src
* simple variable resolution
:PROPERTIES:
:ID: f68821bc-7f49-4389-85b5-914791ee3718
:END:
#+source: four
#+begin_src emacs-lisp
(list 1 2 3 4)
#+end_src
#+begin_src emacs-lisp :var four=four
(length four)
#+end_src
#+results:
: 4
* multi-line header arguments
:PROPERTIES:
:ID: b77c8857-6c76-4ea9-8a61-ddc2648d96c4
:END:
#+headers: :var letters='(a b c d e f g)
#+begin_src emacs-lisp :var numbers='(1 2 3 4 5 6 7)
(map 'list #'list numbers letters)
#+end_src
#+results:
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
| 6 | f |
| 7 | g |
* simple named code block
:PROPERTIES:
:ID: 0d82b52d-1bb9-4916-816b-2c67c8108dbb
:END:
#+source: i-have-a-name
#+begin_src emacs-lisp
42
#+end_src
#+results:
: 42
#+results: i-have-a-name
: 42
* Pascal's Triangle -- export test
:PROPERTIES:
:ID: 92518f2a-a46a-4205-a3ab-bcce1008a4bb
:END:
#+source: pascals-triangle
#+begin_src emacs-lisp :var n=5 :exports both
(defun pascals-triangle (n)
(if (= n 0)
(list (list 1))
(let* ((prev-triangle (pascals-triangle (- n 1)))
(prev-row (car (reverse prev-triangle))))
(append prev-triangle
(list (map 'list #'+
(append prev-row '(0))
(append '(0) prev-row)))))))
(pascals-triangle n)
#+end_src
* calling code blocks from inside table
:PROPERTIES:
:ID: 6d2ff4ce-4489-4e2a-9c65-e3f71f77d975
:END:
#+source: take-sqrt
#+begin_src emacs-lisp :var n=9
(sqrt n)
#+end_src
* executing an lob call line
:PROPERTIES:
:results: silent
:ID: fab7e291-fde6-45fc-bf6e-a485b8bca2f0
:END:
#+call: echo(input="testing")
#+call: echo(input="testing") :results vector
#+call: echo[:var input="testing"]()
#+call: echo[:var input="testing"]() :results vector
#+call: echo("testing")
#+call: echo("testing") :results vector
* parsing header arguments
:PROPERTIES:
:ID: 7eb0dc6e-1c53-4275-88b3-b22f3113b9c3
:END:
#+begin_src example-lang :session :results output :var num=9
the body
#+end_src
* conflicting blocks on export
:PROPERTIES:
:ID: 5daa4d03-e3ea-46b7-b093-62c1b7632df3
:END:
#+results: a-list
- a
- b
- c
#+begin_src emacs-lisp :results wrap :exports both
"code block results"
#+end_src
#+begin_src emacs-lisp :var lst=a-list :results list
(reverse lst)
#+end_src
* using the =:noweb-ref= header argument
:PROPERTIES:
:ID: 54d68d4b-1544-4745-85ab-4f03b3cbd8a0
:END:
#+begin_src sh :tangle yes :noweb yes :shebang #!/bin/sh
<<fullest-disk>>
#+end_src
** query all mounted disks
#+begin_src sh :noweb-ref fullest-disk
df \
#+end_src
** strip the header row
#+begin_src sh :noweb-ref fullest-disk
|sed '1d' \
#+end_src
** sort by the percent full
#+begin_src sh :noweb-ref fullest-disk
|awk '{print $5 " " $6}'|sort -n |tail -1 \
#+end_src
** extract the mount point
#+begin_src sh :noweb-ref fullest-disk
|awk '{print $2}'
#+end_src