summaryrefslogtreecommitdiff
path: root/lisp/calendar/parse-time.el
diff options
context:
space:
mode:
authorChong Yidong <cyd@stupidchicken.com>2009-08-16 14:33:43 +0000
committerChong Yidong <cyd@stupidchicken.com>2009-08-16 14:33:43 +0000
commit1200ac269afbf9d297cced4bf0b02b615f13d3a0 (patch)
tree37e00fac89c814924917b6f7fe9eb0e98c72e6d8 /lisp/calendar/parse-time.el
parent1abbe4e53150562ad7731510672fca35374f1a89 (diff)
downloademacs-1200ac269afbf9d297cced4bf0b02b615f13d3a0.tar.gz
emacs-1200ac269afbf9d297cced4bf0b02b615f13d3a0.tar.bz2
emacs-1200ac269afbf9d297cced4bf0b02b615f13d3a0.zip
* calendar/parse-time.el (parse-time-string-chars): Compute using
character classes (Bug#3190).
Diffstat (limited to 'lisp/calendar/parse-time.el')
-rw-r--r--lisp/calendar/parse-time.el22
1 files changed, 7 insertions, 15 deletions
diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el
index fabed88f0a2..27a71269281 100644
--- a/lisp/calendar/parse-time.el
+++ b/lisp/calendar/parse-time.el
@@ -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
@@ -48,24 +47,17 @@
(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")