Emacs Org Mode: использовать результат блока src в другом блоке src - PullRequest
0 голосов
/ 15 мая 2018

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

Он выводит как таблица

#+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

Iожидаю получить таблицу, но получил ошибку

-: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

Что я сделал не так?

1 Ответ

0 голосов
/ 16 мая 2018

Единственное, что вы можете использовать внутри маркеров <<...>> в "вызове" noweb, - это идентификатор кода, то есть имя блока, который должен его заменить. В частности, вы не можете передавать подобные аргументы <<gdt("arg")>>.

Попробуйте изменить второй блок на это:

#+BEGIN_SRC ruby :noweb eval :exports table :var date="14-05-2018"
<<gdt>>
#+END_SRC
...