diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index fb02bdec8..75f404fb3 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -62,6 +62,8 @@ the corresponding direction by swapping with the adjacent cell. It was unused throughout the code base. +** Miscellaneous +*** Org Table reads numbers starting with 0 as strings * Version 9.2 ** Incompatible changes *** Removal of OrgStruct mode mode and radio lists diff --git a/lisp/ob-core.el b/lisp/ob-core.el index da9fa31e0..be73ca5b6 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -2915,7 +2915,7 @@ situations in which is it not appropriate." (defun org-babel--string-to-number (string) "If STRING represents a number return its value. Otherwise return nil." - (and (string-match-p "\\`-?[0-9]*\\.?[0-9]*\\'" string) + (and (string-match-p "\\`-?\\([0-9]\\|\\([1-9]\\|[0-9]*\\.\\)[0-9]*\\)\\'" string) (string-to-number string))) (defun org-babel-import-elisp-from-file (file-name &optional separator) diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index 28a735511..037d9e289 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -2034,6 +2034,16 @@ abc (let ((org-coderef-label-format "#(ref:%s)")) (org-babel-execute-src-block)))))) +(ert-deftest test-ob/string-to-number () + (should (= 0 (org-babel--string-to-number "0"))) + (should (= 1 (org-babel--string-to-number "1"))) + (should (eq nil (org-babel--string-to-number "000"))) + (should (eq nil (org-babel--string-to-number "001"))) + (should (eq nil (org-babel--string-to-number "010"))) + (should (= 100 (org-babel--string-to-number "100"))) + (should (= 0.1 (org-babel--string-to-number "0.1"))) + (should (= 1.0 (org-babel--string-to-number "1.0")))) + (provide 'test-ob) ;;; test-ob ends here