]> git.eshelyaron.com Git - emacs.git/commitdiff
Refactor parse-time-string
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 16 Jan 2020 01:41:42 +0000 (17:41 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 16 Jan 2020 01:42:11 +0000 (17:42 -0800)
* lisp/calendar/parse-time.el (parse-time--rfc-822ish):
Remove, and fold its body into its only caller.

lisp/calendar/parse-time.el

index 4d4f88efffb97c567dd52c69175affd30bbab05c..6a4612297c7853506961a5bf2dd189aeb7e23516 100644 (file)
@@ -160,47 +160,44 @@ unknown DST value is returned as -1."
   (condition-case ()
       (decoded-time-set-defaults (iso8601-parse string))
     (wrong-type-argument
-     (parse-time--rfc-822ish string))))
-
-(defun parse-time--rfc-822ish (string)
-  (let ((time (list nil nil nil nil nil nil nil -1 nil))
-       (temp (parse-time-tokenize (downcase string))))
-    (while temp
-      (let ((parse-time-elt (pop temp))
-           (rules parse-time-rules)
-           (exit nil))
-       (while (and rules (not exit))
-         (let* ((rule (pop rules))
-                (slots (pop rule))
-                (predicate (pop rule))
-                (parse-time-val))
-           (when (and (not (nth (car slots) time)) ;not already set
-                      (setq parse-time-val
-                            (cond ((and (consp predicate)
-                                        (not (functionp predicate)))
-                                   (and (numberp parse-time-elt)
-                                        (<= (car predicate) parse-time-elt)
-                                        (or (not (cdr predicate))
-                                            (<= parse-time-elt
-                                                (cadr predicate)))
-                                        parse-time-elt))
-                                  ((symbolp predicate)
-                                   (cdr (assoc parse-time-elt
-                                               (symbol-value predicate))))
-                                  ((funcall predicate)))))
-             (setq exit t)
-             (while slots
-               (let ((new-val (if rule
-                                  (let ((this (pop rule)))
-                                    (if (vectorp this)
-                                        (cl-parse-integer
-                                         parse-time-elt
-                                         :start (aref this 0)
-                                         :end (aref this 1))
-                                      (funcall this)))
-                                parse-time-val)))
-                 (setf (nth (pop slots) time) new-val))))))))
-    time))
+     (let ((time (list nil nil nil nil nil nil nil -1 nil))
+          (temp (parse-time-tokenize (downcase string))))
+       (while temp
+        (let ((parse-time-elt (pop temp))
+              (rules parse-time-rules)
+              (exit nil))
+          (while (and rules (not exit))
+            (let* ((rule (pop rules))
+                   (slots (pop rule))
+                   (predicate (pop rule))
+                   (parse-time-val))
+              (when (and (not (nth (car slots) time)) ;not already set
+                         (setq parse-time-val
+                               (cond ((and (consp predicate)
+                                           (not (functionp predicate)))
+                                      (and (numberp parse-time-elt)
+                                           (<= (car predicate) parse-time-elt)
+                                           (or (not (cdr predicate))
+                                               (<= parse-time-elt
+                                                   (cadr predicate)))
+                                           parse-time-elt))
+                                     ((symbolp predicate)
+                                      (cdr (assoc parse-time-elt
+                                                  (symbol-value predicate))))
+                                     ((funcall predicate)))))
+                (setq exit t)
+                (while slots
+                  (let ((new-val (if rule
+                                     (let ((this (pop rule)))
+                                       (if (vectorp this)
+                                           (cl-parse-integer
+                                            parse-time-elt
+                                            :start (aref this 0)
+                                            :end (aref this 1))
+                                         (funcall this)))
+                                   parse-time-val)))
+                    (setf (nth (pop slots) time) new-val))))))))
+       time))))
 
 (defun parse-iso8601-time-string (date-string)
   "Parse an ISO 8601 time string, such as \"2020-01-15T16:12:21-08:00\".