forked from mirrors/org-mode
org-babel: Add new "strip-tangle" :noweb argument value
* lisp/ob-tangle.el (org-babel-tangle-single-block): Strip noweb tags from block if :noweb has been set to "strip-tangle". * lisp/ob-core.el (org-babel-common-header-args-w-values): Add "strip-tangle" as new allowed value. * lisp/ob-core.el (org-babel-noweb-p): Add "strip-tangle" at the appropriate positions. * testing/lisp/test-ob-tangle.el (ob-tangle/strip-tangle): Add new test case for "strip-tangle". * doc/org-manual.org (Noweb Reference Syntax): Adjust documentation for the noweb header argument. * etc/ORG-NEWS: Add entry for new header argument value. This patch adds the "strip-tangle" option for the :noweb header argument. This strips the noweb tags before tangling the block. This can be useful for e.g. testing purposes where one wants to use a block as test case that can be both run inline as well as tangled into a file for automated testing. TINYCHANGE
This commit is contained in:
parent
26a2811b06
commit
5e0c5c186d
|
@ -18998,6 +18998,12 @@ tangled, or exported.
|
|||
Expansion of noweb syntax references in the body of the code block
|
||||
when tangling. No expansion when evaluating or exporting.
|
||||
|
||||
- =strip-tangle= ::
|
||||
|
||||
Expansion of noweb syntax references in the body of the code block
|
||||
when evaluating or exporting. Removes noweb syntax references
|
||||
when exporting.
|
||||
|
||||
- =no-export= ::
|
||||
|
||||
Expansion of noweb syntax references in the body of the code block
|
||||
|
|
|
@ -228,6 +228,11 @@ commands.
|
|||
=:noweb-prefix= can be set to =no= to prevent the prefix characters
|
||||
from being repeated when expanding a multiline noweb reference.
|
||||
|
||||
*** New =:noweb= babel header argument value =strip-tangle=
|
||||
|
||||
=:noweb= can be set to =strip-tangle= to strip the noweb syntax references
|
||||
before tangling.
|
||||
|
||||
*** New LaTeX source block backend using =engraved-faces-latex=
|
||||
|
||||
When ~org-latex-src-block-backend~ is set to ~engraved~,
|
||||
|
|
|
@ -415,7 +415,7 @@ then run `org-babel-switch-to-session'."
|
|||
(mkdirp . ((yes no)))
|
||||
(no-expand)
|
||||
(noeval)
|
||||
(noweb . ((yes no tangle no-export strip-export)))
|
||||
(noweb . ((yes no tangle strip-tangle no-export strip-export)))
|
||||
(noweb-ref . :any)
|
||||
(noweb-sep . :any)
|
||||
(noweb-prefix . ((no yes)))
|
||||
|
@ -2885,9 +2885,9 @@ parameters when merging lists."
|
|||
"Check if PARAMS require expansion in CONTEXT.
|
||||
CONTEXT may be one of :tangle, :export or :eval."
|
||||
(let ((allowed-values (cl-case context
|
||||
(:tangle '("yes" "tangle" "no-export" "strip-export"))
|
||||
(:eval '("yes" "no-export" "strip-export" "eval"))
|
||||
(:export '("yes")))))
|
||||
(:tangle '("yes" "tangle" "no-export" "strip-export" "strip-tangle"))
|
||||
(:eval '("yes" "no-export" "strip-export" "eval" "strip-tangle"))
|
||||
(:export '("yes" "strip-tangle")))))
|
||||
(cl-some (lambda (v) (member v allowed-values))
|
||||
(split-string (or (cdr (assq :noweb params)) "")))))
|
||||
|
||||
|
|
|
@ -536,7 +536,9 @@ non-nil, return the full association list to be used by
|
|||
(body
|
||||
;; Run the tangle-body-hook.
|
||||
(let ((body (if (org-babel-noweb-p params :tangle)
|
||||
(org-babel-expand-noweb-references info)
|
||||
(if (string= "strip-tangle" (cdr (assq :noweb (nth 2 info))))
|
||||
(replace-regexp-in-string (org-babel-noweb-wrap) "" (nth 1 info))
|
||||
(org-babel-expand-noweb-references info))
|
||||
(nth 1 info))))
|
||||
(with-temp-buffer
|
||||
(insert
|
||||
|
|
|
@ -510,6 +510,32 @@ another block
|
|||
(org-split-string (buffer-string))))
|
||||
(delete-file file))))))
|
||||
|
||||
(ert-deftest ob-tangle/strip-tangle ()
|
||||
"Test if strip-tangle works correctly when tangling noweb code blocks."
|
||||
(should
|
||||
(equal '("1")
|
||||
(let ((file (make-temp-file "org-tangle-")))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(org-test-with-temp-text-in-file
|
||||
(format "
|
||||
#+name: block1
|
||||
#+begin_src elisp
|
||||
2
|
||||
#+end_src
|
||||
|
||||
#+begin_src elisp :noweb strip-tangle :tangle %s
|
||||
1<<block1>>
|
||||
#+end_src
|
||||
" file)
|
||||
(let ((org-babel-noweb-error-all-langs nil)
|
||||
(org-babel-noweb-error-langs nil))
|
||||
(org-babel-tangle)))
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(org-split-string (buffer-string))))
|
||||
(delete-file file))))))
|
||||
|
||||
(ert-deftest ob-tangle/detangle-false-positive ()
|
||||
"Test handling of false positive link during detangle."
|
||||
(let (buffer)
|
||||
|
|
Loading…
Reference in New Issue