在 Org-mode 里面有一个叫做 Meta-Programming 的介绍: 参考的是这个链接.
但是如果我想要实现这样的功能: 把一段文本 (比如说是 #+begin_src text
的东西作为输入传给我已经写好的代码里面. )
#+name: english-1-fstn-raw
#+begin_src text
Name ENGLISH-1:
Initial 1
Final 9
From 1 to 3 by NP
From 1 to 2 by DET
From 2 to 3 by N
...
#+end_src
#+name: ruby-fstn-dot-parser
#+begin_src ruby
nodes = /(Initial|Final)\s+(\w+)/
arcs = /From\s+(\w+)\sto\s+(\w+)\s+by\s+(\w+|#)/
res = " rankdir = LR;\n" + \
" node [shape = point]; qi qa;\n" + \
" node [shape = circle];\n"
raw.each_line do |line|
if line.match(nodes)
m = Regexp.last_match
type, node_name = m[1], m[2]
if type == "Initial"
res << " qi -> #{node_name};\n"
else # type == "Final"
res << " #{node_name} -> qa;\n"
end
elsif line.match(arcs)
m = Regexp.last_match
from, to, l = m[1], m[2], m[3]
if m[3] == '#'
label = ";\n"
else
label = " [label = \"#{m[3]}\"];\n"
end
res << " #{from} -> #{to}#{label}"
end
end
return res # from `puts res` changed to `return res`
#+end_src
#+header: :var in=ruby-fstn-dot-parser(raw = english-1-fstn-raw)
#+begin_src dot
digraph finite_state_machine {
$in
}
#+end_src
那么在运行的时候, 则会提示没有对应 text
的运行函数 (嗯, 很合理的感觉);
那么如果我把 #+begin_src text
改成 #+begin_verbatim
; 则会输出 nil
.
那么请问有没有什么方法可以将一段文本作为文本直接传入函数调用呢?