Manually revert to the Release 7.8.04 tag.
[org-mode.git] / testing / examples / babel.org
blob4d8970775e6dcf946eaffd9659a3e62e5aa3179c
1 #+Title: a collection of examples for Babel tests
2 #+OPTIONS: ^:nil
4 * =:noweb= header argument expansion
5   :PROPERTIES:
6   :ID:       eb1f6498-5bd9-45e0-9c56-50717053e7b7
7   :END:
9 #+name: noweb-example
10 #+begin_src emacs-lisp :results silent :exports code
11   (message "expanded1")
12 #+end_src
14 #+name: noweb-example2
15 #+begin_src emacs-lisp :results silent
16   (message "expanded2")
17 #+end_src
19 #+begin_src emacs-lisp :noweb yes :results silent
20 ;; noweb-1-yes-start
21   <<noweb-example>>
22 #+end_src
24 #+begin_src emacs-lisp :noweb no  :results silent
25 ;; noweb-no-start
26   <<noweb-example1>>
27 #+end_src
29 #+begin_src emacs-lisp :noweb yes :results silent
30 ;; noweb-2-yes-start
31   <<noweb-example2>>
32 #+end_src
34 #+begin_src emacs-lisp :noweb tangle :results silent
35   ;; noweb-tangle-start
36   <<noweb-example1>>
37   <<noweb-example2>>
38 #+end_src
40 * =:noweb= header argument expansion using :exports results
41   :PROPERTIES:
42   :ID:       8701beb4-13d9-468c-997a-8e63e8b66f8d
43   :END:
45 #+name: noweb-example
46 #+begin_src emacs-lisp :exports results
47   (message "expanded1")
48 #+end_src
50 #+name: noweb-example2
51 #+begin_src emacs-lisp :exports results
52   (message "expanded2")
53 #+end_src
55 #+begin_src emacs-lisp :noweb yes :exports results
56 ;; noweb-1-yes-start
57   <<noweb-example>>
58 #+end_src
60 #+begin_src emacs-lisp :noweb no :exports code
61 ;; noweb-no-start
62   <<noweb-example1>>
63 #+end_src
65 #+begin_src emacs-lisp :noweb yes :exports results
66 ;; noweb-2-yes-start
67   <<noweb-example2>>
68 #+end_src
70 #+begin_src emacs-lisp :noweb tangle :exports code
71   <<noweb-example1>>
72   <<noweb-example2>>
73 #+end_src
75 * excessive id links on tangling
76   :PROPERTIES:
77   :ID:       ef06fd7f-012b-4fde-87a2-2ae91504ea7e
78   :END:
80 ** no, don't give me an ID
81 #+begin_src emacs-lisp :tangle no
82   (message "not to be tangled")
83 #+end_src
85 ** yes, I'd love an ID
86    :PROPERTIES:
87    :ID:       ae7b55ca-9ef2-4d30-bd48-da30e35fd0f3
88    :END:
89 #+begin_src emacs-lisp :tangle no
90   (message "for tangling")
91 #+end_src
92 * simple named code block
93   :PROPERTIES:
94   :ID:       0d82b52d-1bb9-4916-816b-2c67c8108dbb
95   :END:
97 #+name: i-have-a-name
98 #+begin_src emacs-lisp
99   42
100 #+end_src
102 #+name:
103 : 42
105 #+name: i-have-a-name
106 : 42
108 * Pascal's Triangle -- exports both test
109   :PROPERTIES:
110   :ID:       92518f2a-a46a-4205-a3ab-bcce1008a4bb
111   :END:
113 #+name: pascals-triangle
114 #+begin_src emacs-lisp :var n=5 :exports both
115   (defun pascals-triangle (n)
116     (if (= n 0)
117         (list (list 1))
118       (let* ((prev-triangle (pascals-triangle (- n 1)))
119              (prev-row (car (reverse prev-triangle))))
120         (append prev-triangle
121                 (list (map 'list #'+
122                            (append prev-row '(0))
123                            (append '(0) prev-row)))))))
125   (pascals-triangle n)
126 #+end_src
128 * calling code blocks from inside table
129   :PROPERTIES:
130   :ID:       6d2ff4ce-4489-4e2a-9c65-e3f71f77d975
131   :END:
133 #+name: take-sqrt
134 #+begin_src emacs-lisp :var n=9
135   (sqrt n)
136 #+end_src
138 * executing an lob call line
139   :PROPERTIES:
140   :results:  silent
141   :ID:       fab7e291-fde6-45fc-bf6e-a485b8bca2f0
142   :END:
144 #+call: echo(input="testing")
145 #+call: echo(input="testing") :results vector
146 #+call: echo[:var input="testing"]()
147 #+call: echo[:var input="testing"]() :results vector
148 #+call: echo("testing")
149 #+call: echo("testing") :results vector
150 This is an inline call call_echo(input="testing") embedded in prose.
151 This is an inline call call_echo(input="testing")[:results vector] embedded in prose.
152 #+call: lob-minus(8, 4)
153 call_echo("testing")
154 call_concat(1,2,3)
156 #+name: concat
157 #+begin_src emacs-lisp :var a=0 :var b=0 :var c=0
158   (format "%S%S%S" a b c)
159 #+end_src
161 * exporting an lob call line
162   :PROPERTIES:
163   :ID:       72ddeed3-2d17-4c7f-8192-a575d535d3fc
164   :END:
166 #+name: double
167 #+begin_src emacs-lisp :var it=0
168   (* 2 it)
169 #+end_src
171 The following exports as a normal call line
172 #+call: double(it=0)
174 Now here is an inline call call_double(it=1) stuck in the middle of
175 some prose.
177 This one should not be exported =call_double(it=2)= because it is
178 quoted.
180 Finally this next one should export, even though it starts a line
181 call_double(it=3) because sometimes inline blocks fold with a
182 paragraph.
184 And, a call with raw results call_double(4)[:results raw] should not
185 have quoted results.
187 The following 2*5=call_double(5) should export even when prefixed by
188 an = sign.
190 * inline source block
191   :PROPERTIES:
192   :results:  silent
193   :ID:       54cb8dc3-298c-4883-a933-029b3c9d4b18
194   :END:
195 Here is one in the middle src_sh{echo 1} of a line.
196 Here is one at the end of a line. src_sh{echo 2}
197 src_sh{echo 3} Here is one at the beginning of a line.
199 * mixed blocks with exports both
200   :PROPERTIES:
201   :ID:       5daa4d03-e3ea-46b7-b093-62c1b7632df3
202   :END:
204 #+name: a-list
205 - a
206 - b
207 - c
209 #+begin_src emacs-lisp :exports both
210     "code block results"
211 #+end_src
213 #+begin_src emacs-lisp :var lst=a-list :results list :exports both
214   (reverse lst)
215 #+end_src
217 * using the =:noweb-ref= header argument
218   :PROPERTIES:
219   :ID:       54d68d4b-1544-4745-85ab-4f03b3cbd8a0
220   :noweb-sep: ""
221   :END:
223 #+begin_src sh :tangle yes :noweb yes :shebang #!/bin/sh
224   <<fullest-disk>>
225 #+end_src
227 ** query all mounted disks
228 #+begin_src sh :noweb-ref fullest-disk
229   df
230 #+end_src
232 ** strip the header row
233 #+begin_src sh :noweb-ref fullest-disk
234   |sed '1d'
235 #+end_src
237 ** sort by the percent full
238 #+begin_src sh :noweb-ref fullest-disk
239   |awk '{print $5 " " $6}'|sort -n |tail -1
240 #+end_src
242 ** extract the mount point
243 #+begin_src sh :noweb-ref fullest-disk
244   |awk '{print $2}'
245 #+end_src
246 * resolving sub-trees as references
247   :PROPERTIES:
248   :ID:       2409e8ba-7b5f-4678-8888-e48aa02d8cb4
249   :results:  silent
250   :END:
252 #+begin_src emacs-lisp :var text=d4faa7b3-072b-4dcf-813c-dd7141c633f3
253   (length text)
254 #+end_src
256 #+begin_src org :noweb yes
257   <<simple-subtree>>
258   <<d4faa7b3-072b-4dcf-813c-dd7141c633f3>>
259 #+end_src
261 ** simple subtree with custom ID
262    :PROPERTIES:
263    :CUSTOM_ID: simple-subtree
264    :END:
265 this is simple
267 ** simple subtree with global ID
268    :PROPERTIES:
269    :ID:       d4faa7b3-072b-4dcf-813c-dd7141c633f3
270    :END:
271 has length 14
273 * org-babel-get-inline-src-block-matches
274   :PROPERTIES:
275   :results:  silent
276   :ID:       0D0983D4-DE33-400A-8A05-A225A567BC74
277   :END:
278 src_sh{echo "One"} block at start of line
279  One spaced block in  src_sh{ echo "middle" } of line
280 src_sh{echo 2} blocks on the src_emacs-lisp{"same"} line
281  Inline block with src_sh[:results silent]{ echo "parameters" }.
282 * exporting a code block with a name
283   :PROPERTIES:
284   :ID:       b02ddd8a-eeb8-42ab-8664-8a759e6f43d9
285   :END:
287 exporting a code block with a name
288 #+name: qux
289 #+begin_src sh :foo "baz"
290   echo bar
291 #+end_src
292 * noweb no-export and exports both
293   :PROPERTIES:
294   :ID:       8a820f6c-7980-43db-8a24-0710d33729c9
295   :END:
296 Weird interaction.
298 here is one block
300 #+name: noweb-no-export-and-exports-both-1
301 #+BEGIN_SRC sh :exports none
302   echo 1
303 #+END_SRC
305 and another
307 #+BEGIN_SRC sh :noweb no-export :exports both
308   # I am inside the code block
309   <<noweb-no-export-and-exports-both-1>>
310 #+END_SRC
312 * in order evaluation on export
313   :PROPERTIES:
314   :exports: results
315   :ID:       96cc7073-97ec-4556-87cf-1f9bffafd317
316   :END:
318 First.
319 #+name: foo-for-order-of-evaluation
320 #+begin_src emacs-lisp :var it=1
321   (push it *evaluation-collector*)
322 #+end_src
324 Second
325 #+begin_src emacs-lisp
326   (push 2 *evaluation-collector*)
327 #+end_src
329 Third src_emacs-lisp{(push 3 *evaluation-collector*)}
331 Fourth
332 #+call: foo-for-order-of-evaluation(4)
334 Fifth
335 #+begin_src emacs-lisp
336   (push 5 *evaluation-collector*)
337 #+end_src
338 * exporting more than just results from a call line
339   :PROPERTIES:
340   :ID:       bec63a04-491e-4caa-97f5-108f3020365c
341   :END:
342 Here is a call line with more than just the results exported.
343 #+call: double(8)
344 * strip noweb references on export
345   :PROPERTIES:
346   :ID:       8e7bd234-99b2-4b14-8cd6-53945e409775
347   :END:
349 #+name: strip-export-1
350 #+BEGIN_SRC sh :exports none
351   i="10"
352 #+END_SRC
354 #+BEGIN_SRC sh :noweb strip-export :exports code :results silent
355   <<strip-export-1>>
356   echo "1$i"
357 #+END_SRC