Browse Source

Fix analyzing european dates with time but without year

* lisp/org.el (org-read-date-analyze): Fix analyzing for dates like
  "29.03 16:40".
* testing/lisp/test-org.el: Add test.
Nicolas Goaziou 12 years ago
parent
commit
5212d4fa6b
2 changed files with 24 additions and 6 deletions
  1. 5 6
      lisp/org.el
  2. 19 0
      testing/lisp/test-org.el

+ 5 - 6
lisp/org.el

@@ -15502,14 +15502,13 @@ user."
 
     ;; Help matching dotted european dates
     (when (string-match
-	   "^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\. ?\\([1-9][0-9][0-9][0-9]\\)?" ans)
-      (setq year (if (match-end 3)
-		     (string-to-number (match-string 3 ans))
-		   (progn (setq kill-year t)
-			  (string-to-number (format-time-string "%Y"))))
+	   "^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\.\\( ?[1-9][0-9]\\{3\\}\\)?" ans)
+      (setq year (if (match-end 3) (string-to-number (match-string 3 ans))
+		   (setq kill-year t)
+		   (string-to-number (format-time-string "%Y")))
 	    day (string-to-number (match-string 1 ans))
 	    month (string-to-number (match-string 2 ans))
-	    ans (replace-match (format "%04d-%02d-%02d\\5" year month day)
+	    ans (replace-match (format "%04d-%02d-%02d" year month day)
 			       t nil ans)))
 
     ;; Help matching american dates, like 5/30 or 5/30/7

+ 19 - 0
testing/lisp/test-org.el

@@ -89,6 +89,25 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
     (should (equal '(2 1) (org-babel-execute-src-block)))))
 
 
+
+;;; Date Analysis
+
+(ert-deftest test-org/org-read-date ()
+  "Test `org-read-date' specifications."
+  ;; Parse ISO date with abbreviated year and month.
+  (should (equal "2012-03-29 16:40"
+		 (let ((org-time-was-given t))
+		   (org-read-date t nil "12-3-29 16:40"))))
+  ;; Parse Europeans dates.
+  (should (equal "2012-03-29 16:40"
+		 (let ((org-time-was-given t))
+		   (org-read-date t nil "29.03.2012 16:40"))))
+  ;; Parse Europeans dates without year.
+  (should (string-match "2[0-9]\\{3\\}-03-29 16:40"
+			(let ((org-time-was-given t))
+			  (org-read-date t nil "29.03. 16:40")))))
+
+
 
 ;;; Links