2010-10-06 12:23:50 -04:00
|
|
|
#+Title: a collection of examples for Babel tests
|
2011-06-25 18:06:46 -04:00
|
|
|
#+OPTIONS: ^:nil
|
2010-10-06 12:23:50 -04:00
|
|
|
|
|
|
|
* =: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
|
2010-10-14 09:32:21 -04:00
|
|
|
|
|
|
|
* 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
|
|
|
|
|
2010-10-14 19:15:11 -04:00
|
|
|
* 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
|
2010-10-15 14:38:48 -04:00
|
|
|
* 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
|
|
|
|
|
2010-10-15 17:46:20 -04:00
|
|
|
* 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
|
|
|
|
|
2010-10-15 20:00:57 -04:00
|
|
|
* 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
|
2010-10-16 15:55:54 -04:00
|
|
|
|
2010-10-16 00:43:45 -04:00
|
|
|
* 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
|
2010-10-16 15:55:54 -04:00
|
|
|
|
2010-10-16 12:02:57 -04:00
|
|
|
* executing an lob call line
|
|
|
|
:PROPERTIES:
|
|
|
|
:results: silent
|
2010-11-23 11:39:26 -05:00
|
|
|
:ID: fab7e291-fde6-45fc-bf6e-a485b8bca2f0
|
2010-10-16 12:02:57 -04:00
|
|
|
:END:
|
|
|
|
|
|
|
|
#+call: echo(input="testing")
|
|
|
|
#+call: echo(input="testing") :results vector
|
2010-11-08 16:26:47 -05:00
|
|
|
#+call: echo[:var input="testing"]()
|
|
|
|
#+call: echo[:var input="testing"]() :results vector
|
2011-06-25 17:41:13 -04:00
|
|
|
#+call: echo("testing")
|
|
|
|
#+call: echo("testing") :results vector
|
2011-06-25 18:06:46 -04:00
|
|
|
This is an inline call call_echo(input="testing") embedded in prose.
|
|
|
|
This is an inline call call_echo(input="testing")[:results vector] embedded in prose.
|
2011-06-25 18:21:02 -04:00
|
|
|
#+call: lob-minus(8, 4)
|
2011-06-25 20:46:57 -04:00
|
|
|
call_echo("testing")
|
2010-11-23 11:39:26 -05:00
|
|
|
|
2011-06-27 14:34:00 -04:00
|
|
|
* exporting an lob call line
|
|
|
|
:PROPERTIES:
|
|
|
|
:ID: 72ddeed3-2d17-4c7f-8192-a575d535d3fc
|
|
|
|
:END:
|
|
|
|
|
|
|
|
#+source: double
|
|
|
|
#+begin_src emacs-lisp :var it=0
|
|
|
|
(* 2 it)
|
|
|
|
#+end_src
|
|
|
|
|
|
|
|
The following exports as a normal call line
|
|
|
|
#+call: double(it=0)
|
|
|
|
|
|
|
|
Now here is an inline call call_double(it=1) stuck in the middle of
|
|
|
|
some prose.
|
|
|
|
|
|
|
|
This one should not be exported =call_double(it=2)= because it is
|
|
|
|
quoted.
|
|
|
|
|
|
|
|
Finally this next one should export, even though it starts a line
|
|
|
|
call_double(it=3) because sometimes inline blocks fold with a
|
|
|
|
paragraph.
|
|
|
|
|
|
|
|
And, a call with raw results call_double(4)[:results raw] should not
|
|
|
|
have quoted results.
|
|
|
|
|
2011-06-28 13:14:58 -04:00
|
|
|
The following 2*5=call_double(5) should export even when prefixed by
|
|
|
|
an = sign.
|
|
|
|
|
2010-11-23 11:39:26 -05:00
|
|
|
* 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
|
2010-12-13 14:41:55 -05:00
|
|
|
* 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
|
2011-06-16 00:27:58 -04:00
|
|
|
* 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
|