Emacs 组织模式:在另一个 src 块中使用 src 块的结果
Emacs Org Mode: use result of src block in another src block
A 得到 src 块
#+NAME: gdt
#+BEGIN_SRC ruby :var date="14-05-2018"
require 'active_support/all'
table_header_days = []
today = Date.parse(date)
0.upto(7 - today.wday) do |n|
table_header_days.push("#{(today + n.days).day} #{(today + n.days).strftime('%a')}")
end
[['', table_header_days, ''].flatten, nil, ['row 1'], ['row 2'], ['row 3'], ['row 4']]
#+END_SRC
它输出像 table
#+RESULTS: gdt
| | 14 Mon | 15 Tue | 16 Wed | 17 Thu | 18 Fri | 19 Sat | 20 Sun | |
|-------+--------+--------+--------+--------+--------+--------+--------+---|
| row 1 | | | | | | | | |
| row 2 | | | | | | | | |
| row 3 | | | | | | | | |
| row 4 | | | | | | | | |
我想在其他 src 块中使用这个 src 块
#+BEGIN_SRC ruby :noweb eval :exports table
<<gdt("14-05-2018")>>
#+END_SRC
我希望得到 table 但出现错误
-:3: syntax error, unexpected tIDENTIFIER, expecting ')'
i" "19 Sat" "20 Sun" "") hline ("row 1") ("row 2") ("row 3")
^
-:3: syntax error, unexpected '(', expecting ')'
"20 Sun" "") hline ("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected '(', expecting keyword_end
") hline ("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected ')', expecting keyword_end
("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected ')', expecting keyword_end
("row 2") ("row 3") ("row 4"))
^
-:6: syntax error, unexpected end-of-input, expecting keyword_end
我做错了什么?
在 noweb "call" 中,您唯一可以在 <<...>>
标记内使用的是代码 ID,即要替换它的块的名称。特别是,您不能传递这样的参数 <<gdt("arg")>>
.
尝试将您的第二个块更改为:
#+BEGIN_SRC ruby :noweb eval :exports table :var date="14-05-2018"
<<gdt>>
#+END_SRC
A 得到 src 块
#+NAME: gdt
#+BEGIN_SRC ruby :var date="14-05-2018"
require 'active_support/all'
table_header_days = []
today = Date.parse(date)
0.upto(7 - today.wday) do |n|
table_header_days.push("#{(today + n.days).day} #{(today + n.days).strftime('%a')}")
end
[['', table_header_days, ''].flatten, nil, ['row 1'], ['row 2'], ['row 3'], ['row 4']]
#+END_SRC
它输出像 table
#+RESULTS: gdt
| | 14 Mon | 15 Tue | 16 Wed | 17 Thu | 18 Fri | 19 Sat | 20 Sun | |
|-------+--------+--------+--------+--------+--------+--------+--------+---|
| row 1 | | | | | | | | |
| row 2 | | | | | | | | |
| row 3 | | | | | | | | |
| row 4 | | | | | | | | |
我想在其他 src 块中使用这个 src 块
#+BEGIN_SRC ruby :noweb eval :exports table
<<gdt("14-05-2018")>>
#+END_SRC
我希望得到 table 但出现错误
-:3: syntax error, unexpected tIDENTIFIER, expecting ')'
i" "19 Sat" "20 Sun" "") hline ("row 1") ("row 2") ("row 3")
^
-:3: syntax error, unexpected '(', expecting ')'
"20 Sun" "") hline ("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected '(', expecting keyword_end
") hline ("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected ')', expecting keyword_end
("row 1") ("row 2") ("row 3") ("row 4"))
^
-:3: syntax error, unexpected ')', expecting keyword_end
("row 2") ("row 3") ("row 4"))
^
-:6: syntax error, unexpected end-of-input, expecting keyword_end
我做错了什么?
在 noweb "call" 中,您唯一可以在 <<...>>
标记内使用的是代码 ID,即要替换它的块的名称。特别是,您不能传递这样的参数 <<gdt("arg")>>
.
尝试将您的第二个块更改为:
#+BEGIN_SRC ruby :noweb eval :exports table :var date="14-05-2018"
<<gdt>>
#+END_SRC