[gnus git] branch master updated: m0-11-43-g1e2f84e =1= parse-time.el: Use cl-lib as much as possible following the 2014-09-26 change in the Emacs trunk

Katsumi <[email protected]> Fri, 26 Sep 2014 11:44:43 +0200
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  1e2f84e325c24a2d1c4f08074bca23d235ff9287 (commit)
      from  af61423c9db844b75a738d65a851acf5fc8e6812 (commit)


- Log -----------------------------------------------------------------
commit 1e2f84e325c24a2d1c4f08074bca23d235ff9287
Author: Katsumi Yamaoka <[email protected]>
Date:   Fri Sep 26 09:44:48 2014 +0000

    parse-time.el: Use cl-lib as much as possible following the 2014-09-26 change in the Emacs trunk

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index a18ec54..e238447 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,15 @@
+2014-09-26  Katsumi Yamaoka  <[email protected]>
+
+	Use cl-lib as much as possible following the 2014-09-26 change
+	in the Emacs trunk.
+	* parse-time.el: Try requiring cl-lib.
+	(parse-time-incf): Alias to cl-incf or incf.
+	(digit-char-p): Remove.
+	(parse-time-integer): Alias to cl-parse-integer or the one defined.
+	(parse-integer): Rename to parse-time-integer.
+	(parse-time-tokenize, parse-time-rules, parse-time-string)
+	Use parse-time-incf and parse-time-integer.
+
 2014-09-11  Paul Eggert  <[email protected]>
 
 	* gnus-cloud.el (gnus-cloud-parse-version-1): Fix misspelling
diff --git a/lisp/parse-time.el b/lisp/parse-time.el
index 85b8ef1..392aff2 100644
--- a/lisp/parse-time.el
+++ b/lisp/parse-time.el
@@ -34,23 +34,22 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl))	;and ah ain't kiddin' 'bout it
-
 (eval-and-compile
-  (when (featurep 'xemacs)
-    (defvar parse-time-syntax (make-vector 256 nil))))
-(defvar parse-time-digits (make-vector 256 nil))
+  (ignore-errors (require 'cl-lib))
+  (if (featurep 'cl-lib)
+      ;; Emacs >=24
+      (defalias 'parse-time-incf 'cl-incf)
+    (require 'cl)
+    (defalias 'parse-time-incf 'incf)))
 
 ;; Byte-compiler warnings
 (defvar parse-time-elt)
 (defvar parse-time-val)
 
-(unless (aref parse-time-digits ?0)
-  (loop for i from ?0 to ?9
-    do (aset parse-time-digits i (- i ?0))))
-
-(when (featurep 'xemacs)
-  (unless (aref parse-time-syntax ?0)
+(eval-and-compile
+  (if (featurep 'xemacs)
+      (progn
+	(defvar parse-time-syntax (make-vector 256 nil))
 	(loop for i from ?0 to ?9
 	      do (aset parse-time-syntax i ?0))
 	(loop for i from ?A to ?Z
@@ -59,16 +58,10 @@
 	      do (aset parse-time-syntax i ?a))
 	(aset parse-time-syntax ?+ 1)
 	(aset parse-time-syntax ?- -1)
-    (aset parse-time-syntax ?: ?d)))
-
-(defsubst digit-char-p (char)
-  (aref parse-time-digits char))
-
-(eval-and-compile
-  (if (featurep 'xemacs)
+	(aset parse-time-syntax ?: ?d)
 	(defsubst parse-time-string-chars (char)
 	  (and (< char (length parse-time-syntax))
-	     (aref parse-time-syntax char)))
+	       (aref parse-time-syntax char))))
     (defsubst parse-time-string-chars (char)
       (save-match-data
 	(let (case-fold-search str)
@@ -79,15 +72,19 @@
 		((string-match "[[:lower:]]" str) ?a)
 		((string-match "[[:digit:]]" str) ?0)))))))
 
-(put 'parse-error 'error-conditions '(parse-error error))
-(put 'parse-error 'error-message "Parsing error")
-
-(defsubst parse-integer (string &optional start end)
+(eval-and-compile
+  (if (fboundp 'cl-parse-integer)
+      (defalias 'parse-time-integer 'cl-parse-integer)
+    (defvar parse-time-digits (make-vector 256 nil))
+    (loop for i from ?0 to ?9
+	  do (aset parse-time-digits i (- i ?0)))
+    (defun parse-time-integer (string &rest keys)
       "[CL] Parse and return the integer in STRING, or nil if none."
-  (let ((integer 0)
+      (let* ((start (plist-get keys :start))
+	     (end (or (plist-get keys :end) (length string)))
+	     (integer 0)
 	     (digit 0)
-	(index (or start 0))
-	(end (or end (length string))))
+	     (index (or start 0)))
 	(when (< index end)
 	  (let ((sign (aref string index)))
 	    (if (or (eq sign ?+) (eq sign ?-))
@@ -95,13 +92,13 @@
 		      index (1+ index))
 	      (setq sign 1))
 	    (while (and (< index end)
-		    (setq digit (digit-char-p (aref string index))))
+			(setq digit (aref parse-time-digits
+					  (aref string index))))
 	      (setq integer (+ (* integer 10) digit)
 		    index (1+ index)))
 	    (if (/= index end)
-	    (signal 'parse-error `("not an integer"
-				   ,(substring string (or start 0) end)))
-	  (* sign integer))))))
+		(error "Not an integer string: `%s'" string)
+	      (* sign integer))))))))
 
 (defun parse-time-tokenize (string)
   "Tokenize STRING into substrings."
@@ -114,13 +111,14 @@
     (while (< index end)
       (while (and (< index end)		;Skip invalid characters.
 		  (not (setq c (parse-time-string-chars (aref string index)))))
-	(incf index))
+	(parse-time-incf index))
       (setq start index all-digits (eq c ?0))
-      (while (and (< (incf index) end)	;Scan valid characters.
+      (while (and (< (parse-time-incf index) end) ;Scan valid characters.
 		  (setq c (parse-time-string-chars (aref string index))))
 	(setq all-digits (and all-digits (eq c ?0))))
       (if (<= index end)
-	  (push (if all-digits (parse-integer string start index)
+	  (push (if all-digits (parse-time-integer string
+						   :start start :end index)
 		  (substring string start index))
 		list)))
     (nreverse list)))
@@ -167,8 +165,9 @@
 	       (= 5 (length parse-time-elt))
 	       (or (= (aref parse-time-elt 0) ?+)
 		   (= (aref parse-time-elt 0) ?-))))
-     ,#'(lambda () (* 60 (+ (parse-integer parse-time-elt 3 5)
-			    (* 60 (parse-integer parse-time-elt 1 3)))
+     ,#'(lambda () (* 60 (+ (parse-time-integer parse-time-elt :start 3 :end 5)
+			    (* 60 (parse-time-integer parse-time-elt
+						      :start 1 :end 3)))
 		      (if (= (aref parse-time-elt 0) ?-) -1 1))))
     ((5 4 3)
      ,#'(lambda () (and (stringp parse-time-elt)
@@ -230,9 +229,10 @@ unknown are returned as nil."
 		(let ((new-val (if rule
 				   (let ((this (pop rule)))
 				     (if (vectorp this)
-					 (parse-integer
+					 (parse-time-integer
 					  parse-time-elt
-					  (aref this 0) (aref this 1))
+					  :start (aref this 0)
+					  :end (aref this 1))
 				       (funcall this)))
 				 parse-time-val)))
 		  (rplaca (nthcdr (pop slots) time) new-val))))))))

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/ChangeLog     |   12 ++++++
 lisp/parse-time.el |  114 ++++++++++++++++++++++++++--------------------------
 2 files changed, 69 insertions(+), 57 deletions(-)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project