]> git.eshelyaron.com Git - emacs.git/commitdiff
* calendar/parse-time.el (parse-time-string-chars): Compute using
authorChong Yidong <cyd@stupidchicken.com>
Sun, 16 Aug 2009 14:33:43 +0000 (14:33 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 16 Aug 2009 14:33:43 +0000 (14:33 +0000)
character classes (Bug#3190).

lisp/ChangeLog
lisp/calendar/parse-time.el

index 2cdb28ddc3bc5b79b58af958a846bf8b17edb3de..492337757daf2e699900edc564c41c610bd42add 100644 (file)
@@ -1,5 +1,8 @@
 2009-08-16  Chong Yidong  <cyd@stupidchicken.com>
 
+       * calendar/parse-time.el (parse-time-string-chars): Compute using
+       character classes (Bug#3190).
+
        * progmodes/sh-script.el (sh-maybe-here-document): Avoid inserting
        another heredoc if the user adds another < (Bug#3226).
 
index fabed88f0a2b18d4c09693229f5d929bbc091130..27a71269281ff2d796fc85173629e7a0f1f4c932 100644 (file)
@@ -37,7 +37,6 @@
 
 (eval-when-compile (require 'cl))      ;and ah ain't kiddin' 'bout it
 
-(defvar parse-time-syntax (make-vector 256 nil))
 (defvar parse-time-digits (make-vector 256 nil))
 
 ;; Byte-compiler warnings
   (loop for i from ?0 to ?9
     do (aset parse-time-digits i (- i ?0))))
 
-(unless (aref parse-time-syntax ?0)
-  (loop for i from ?0 to ?9
-    do (aset parse-time-syntax i ?0))
-  (loop for i from ?A to ?Z
-    do (aset parse-time-syntax i ?A))
-  (loop for i from ?a to ?z
-    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))
 
 (defsubst parse-time-string-chars (char)
-  (and (< char (length parse-time-syntax))
-       (aref parse-time-syntax char)))
+  (let (case-fold-search str)
+    (cond ((eq char ?+) 1)
+         ((eq char ?-) -1)
+         ((eq char ?:) ?d)
+         ((string-match "[[:upper:]]" (setq str (string char))) ?A)
+         ((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")