From: Chong Yidong Date: Sun, 16 Aug 2009 14:33:43 +0000 (+0000) Subject: * calendar/parse-time.el (parse-time-string-chars): Compute using X-Git-Tag: emacs-pretest-23.1.90~1834 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1200ac269afbf9d297cced4bf0b02b615f13d3a0;p=emacs.git * calendar/parse-time.el (parse-time-string-chars): Compute using character classes (Bug#3190). --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2cdb28ddc3b..492337757da 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2009-08-16 Chong Yidong + * 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). 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")