Don't match partial names when resolving code or data references

* lisp/ob.el (org-babel-named-src-block-regexp-for-name): Ensure that
  partial names are not matched.
  (org-babel-named-data-regexp-for-name): Ensure that partial names
  are not matched.
* testing/lisp/test-ob.el (test-ob/do-not-resolve-to-partial-names-data):
  Test to ensure that partial names are not matched.
This commit is contained in:
Eric Schulte 2011-11-16 06:15:31 -07:00
parent 19884ab280
commit 7c21098323
2 changed files with 37 additions and 2 deletions

View File

@ -433,12 +433,13 @@ can not be resolved.")
(defun org-babel-named-src-block-regexp-for-name (name)
"This generates a regexp used to match a src block named NAME."
(concat org-babel-src-name-regexp (regexp-quote name) "[ \t\n]*"
(concat org-babel-src-name-regexp (regexp-quote name)
"\\([ \t]\\|$\\|(\\)" ".*[\r\n]"
(substring org-babel-src-block-regexp 1)))
(defun org-babel-named-data-regexp-for-name (name)
"This generates a regexp used to match data named NAME."
(concat org-babel-result-regexp (regexp-quote name) "[ \t]*.*$"))
(concat org-babel-result-regexp (regexp-quote name) "\\([ \t]\\|$\\)"))
;;; functions
(defvar call-process-region)

View File

@ -463,6 +463,40 @@ on two lines
(org-babel-next-src-block 2)
(should (string= (org-babel-execute-src-block) "baz"))))
(ert-deftest test-ob/do-not-resolve-to-partial-names-data ()
(org-test-with-temp-text "
#+tblname: base_plus
| 1 |
| 2 |
#+tblname: base
| 3 |
| 4 |
#+begin_src emacs-lisp :var x=base
x
#+end_src"
(org-babel-next-src-block 1)
(should (equal (org-babel-execute-src-block) '((3) (4))))))
(ert-deftest test-ob/do-not-resolve-to-partial-names-code ()
(org-test-with-temp-text "
#+name: base_plus
#+begin_src emacs-lisp
'bar
#+end_src
#+name: base
#+begin_src emacs-lisp
'foo
#+end_src
#+begin_src emacs-lisp :var x=base
x
#+end_src"
(org-babel-next-src-block 3)
(should (equal (org-babel-execute-src-block) "foo"))))
(provide 'test-ob)
;;; test-ob ends here