X-Git-Url: https://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fparse-time.el;h=0a14b133a7d864e23354d0d36bd64c64b9f6549a;hb=cc52ad34d2922b013fd8026d0728617261979da6;hp=e6bac898d93357cb8912daaf672d3b5968d02a28;hpb=8b5af94e55ef83ee46b42d32d92fa1ce95dcacf5;p=gnus diff --git a/lisp/parse-time.el b/lisp/parse-time.el index e6bac898d..0a14b133a 100644 --- a/lisp/parse-time.el +++ b/lisp/parse-time.el @@ -1,7 +1,6 @@ ;;; parse-time.el --- parsing time strings -;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, -;; 2008 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2000-2011 Free Software Foundation, Inc. ;; Author: Erik Naggum ;; Keywords: util @@ -37,7 +36,9 @@ (eval-when-compile (require 'cl)) ;and ah ain't kiddin' 'bout it -(defvar parse-time-syntax (make-vector 256 nil)) +(eval-and-compile + (when (featurep 'xemacs) + (defvar parse-time-syntax (make-vector 256 nil)))) (defvar parse-time-digits (make-vector 256 nil)) ;; Byte-compiler warnings @@ -48,24 +49,35 @@ (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) - ) +(when (featurep 'xemacs) + (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))) +(eval-and-compile + (if (featurep 'xemacs) + (defsubst parse-time-string-chars (char) + (and (< char (length parse-time-syntax)) + (aref parse-time-syntax char))) + (defsubst parse-time-string-chars (char) + (save-match-data + (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") @@ -116,9 +128,18 @@ (defvar parse-time-months '(("jan" . 1) ("feb" . 2) ("mar" . 3) ("apr" . 4) ("may" . 5) ("jun" . 6) ("jul" . 7) ("aug" . 8) ("sep" . 9) - ("oct" . 10) ("nov" . 11) ("dec" . 12))) + ("oct" . 10) ("nov" . 11) ("dec" . 12) + ("january" . 1) ("february" . 2) + ("march" . 3) ("april" . 4) ("june" . 6) + ("july" . 7) ("august" . 8) + ("september" . 9) ("october" . 10) + ("november" . 11) ("december" . 12))) (defvar parse-time-weekdays '(("sun" . 0) ("mon" . 1) ("tue" . 2) - ("wed" . 3) ("thu" . 4) ("fri" . 5) ("sat" . 6))) + ("wed" . 3) ("thu" . 4) ("fri" . 5) + ("sat" . 6) ("sunday" . 0) ("monday" . 1) + ("tuesday" . 2) ("wednesday" . 3) + ("thursday" . 4) ("friday" . 5) + ("saturday" . 6))) (defvar parse-time-zoneinfo `(("z" 0) ("ut" 0) ("gmt" 0) ("pst" ,(* -8 3600)) ("pdt" ,(* -7 3600) t) ("mst" ,(* -7 3600)) ("mdt" ,(* -6 3600) t) @@ -173,6 +194,7 @@ ((5) (50 110) ,#'(lambda () (+ 1900 parse-time-elt))) ((5) (0 49) ,#'(lambda () (+ 2000 parse-time-elt)))) "(slots predicate extractor...)") +;;;###autoload(put 'parse-time-rules 'risky-local-variable t) ;;;###autoload (defun parse-time-string (string) @@ -217,5 +239,4 @@ unknown are returned as nil." (provide 'parse-time) -;; arch-tag: 07066094-45a8-4c68-b307-86195e2c1103 ;;; parse-time.el ends here