diff options
author | Chong Yidong <cyd@stupidchicken.com> | 2009-08-16 14:33:43 +0000 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2009-08-16 14:33:43 +0000 |
commit | 1200ac269afbf9d297cced4bf0b02b615f13d3a0 (patch) | |
tree | 37e00fac89c814924917b6f7fe9eb0e98c72e6d8 /lisp/calendar/parse-time.el | |
parent | 1abbe4e53150562ad7731510672fca35374f1a89 (diff) | |
download | emacs-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.el | 22 |
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") |