]> git.eshelyaron.com Git - emacs.git/commitdiff
Make iso8601.el understand two obsolete forms
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Jan 2020 01:11:09 +0000 (02:11 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 30 Jan 2020 01:11:15 +0000 (02:11 +0100)
* lisp/calendar/iso8601.el (iso8601-parse-date): Understand some
obsolete formats to provide compatibility with the vCard RFC
(bug#39347).

lisp/calendar/iso8601.el
test/lisp/calendar/iso8601-tests.el

index e42fe0fa21f8c0fe6c535db1c609be0902c48863..858d561f188f180639de36513dd62f91bedf54b9 100644 (file)
@@ -202,6 +202,12 @@ See `decode-time' for the meaning of FORM."
       (iso8601--decoded-time :year year
                              :month (decoded-time-month month-day)
                              :day (decoded-time-day month-day))))
+   ;; Obsolete format with implied year: --MM
+   ((iso8601--match "--\\([0-9][0-9]\\)" string)
+    (iso8601--decoded-time :month (string-to-number (match-string 1 string))))
+   ;; Obsolete format with implied year and month: ---DD
+   ((iso8601--match "---\\([0-9][0-9]\\)" string)
+    (iso8601--decoded-time :day (string-to-number (match-string 1 string))))
    (t
     (signal 'wrong-type-argument string))))
 
index 6e7a4724a6beb15fa7732e545b7457ad03a7bcd2..c2994ef8b4d1cddd078312ecac10e33d9be4062d 100644 (file)
   (should (equal (iso8601-parse-date "--0201")
                  '(nil nil nil 1 2 nil nil -1 nil))))
 
+(ert-deftest test-iso8601-date-obsolete-2000 ()
+  ;; These are forms in 5.2.1.3 of the 2000 version of the standard,
+  ;; e) and f).
+  (should (equal (iso8601-parse-date "--02")
+                 '(nil nil nil nil 2 nil nil -1 nil)))
+  (should (equal (iso8601-parse-date "---12")
+                 '(nil nil nil 12 nil nil nil -1 nil))))
+
 (ert-deftest test-iso8601-date-weeks ()
   (should (equal (iso8601-parse-date "2008W39-6")
                  '(nil nil nil 27 9 2008 nil -1 nil)))