orgモードでソースブロックにeLispコードのnoweb参照を使用する

eLispソースブロック内の noweb で参照されるorgモードソースブロックを操作したい:

#+name: conceptmap
#+begin_src org :results value raw :exports results
(ONE) {TWO} (THREE)
(FOUR) {FIVE} (SIX)
#+end_src

#+begin_src emacs-lisp :noweb yes :results output 
(downcase (<>)
#+end_src

望ましい結果は次のとおりです。

(one) {two} (three)
(four) {five} (six)

実際の結果は次のとおりです。

(downcase ((ONE) {TWO} (THREE)
(downcase ((FOUR) {FIVE} (SIX))

Why is it that the function downcase is not executed, and why is it that it is repeated? What is <> in reality? Can it be treated like a string or text block?

2
あなたのMWEには見られない何らかの理由で noweb で解決しましたか?それ以外の場合は、ヘッダ内の:var str = conceptmap を使用してorgブロックのコンテンツを参照し、 results 型をstに変更します。 (downcase str)を評価してください。
追加された 著者 Superbest,
ありがとう、@mutbuerger。私はあなたの提案で解決しました。それにもかかわらず、私の質問に対する答えが分かっていれば、 noweb のアプローチが有望に見えるので興味があります。
追加された 著者 No Name,

1 答え

あなたの問題に対する解決策を見つけました。

あなたのファイルは次のようになります

#+name: conceptmap
#+begin_src org  :exports none
 (ONE) {TWO} (THREE) 
 (FOUR) {FIVE} (SIX)
#+end_src

#+begin_src emacs-lisp :noweb yes 
  (downcase "
    <>
   "
  )
#+end_src

あなたのオリジナルの "input"が直接解析され、(ONE)のような文字列が関数として解釈されるので、 "に注意を払う。

もう一つの非常に重要な点は、バグ、またはnoweb拡張アルゴリズムの不十分な制限があるように見えるので、noweb参照はそれ自身の行になければならないということです(私の制限が固定されているかどうかはわかりません)

私は、noweb参照がそれ自身の行にある場合、何が起こるかの少しの例を持っています。

 #+name: test
 #+BEGIN_SRC emacs-lisp
  (let ((a 1)
        (b 2)
        (c 3))
    (+ a b c))
#+END_SRC

#+BEGIN_SRC emacs-lisp :noweb yes
  (+ 4 <>)
#+END_SRC

それは

(+ 4 (let ((a 1)
(+ 4       (b 2)
(+ 4       (c 3))
(+ 4   (+ a b c)))
2
追加された