• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/emacs-92/emacs/lisp/calendar/

Lines Matching defs:parse

0 ;;; parse-time.el --- parsing time strings
33 ;; `parse-time-string' parses a time in a string and returns a list of 9
42 (defvar parse-time-syntax (make-vector 256 nil))
43 (defvar parse-time-digits (make-vector 256 nil))
46 (defvar parse-time-elt)
47 (defvar parse-time-val)
49 (unless (aref parse-time-digits ?0)
51 do (aset parse-time-digits i (- i ?0))))
53 (unless (aref parse-time-syntax ?0)
55 do (aset parse-time-syntax i ?0))
57 do (aset parse-time-syntax i ?A))
59 do (aset parse-time-syntax i ?a))
60 (aset parse-time-syntax ?+ 1)
61 (aset parse-time-syntax ?- -1)
62 (aset parse-time-syntax ?: ?d)
66 (aref parse-time-digits char))
68 (defsubst parse-time-string-chars (char)
69 (and (< char (length parse-time-syntax))
70 (aref parse-time-syntax char)))
72 (put 'parse-error 'error-conditions '(parse-error error))
73 (put 'parse-error 'error-message "Parsing error")
75 (defsubst parse-integer (string &optional start end)
84 (setq sign (parse-time-string-chars sign)
92 (signal 'parse-error `("not an integer"
96 (defun parse-time-tokenize (string)
106 (not (setq c (parse-time-string-chars (aref string index)))))
110 (setq c (parse-time-string-chars (aref string index))))
113 (push (if all-digits (parse-integer string start index)
118 (defvar parse-time-months '(("jan" . 1) ("feb" . 2) ("mar" . 3)
122 (defvar parse-time-weekdays '(("sun" . 0) ("mon" . 1) ("tue" . 2)
124 (defvar parse-time-zoneinfo `(("z" 0) ("ut" 0) ("gmt" 0)
131 (defvar parse-time-rules
132 `(((6) parse-time-weekdays)
134 ((4) parse-time-months)
137 ,#'(lambda () (and (stringp parse-time-elt)
138 (= (length parse-time-elt) 8)
139 (= (aref parse-time-elt 2) ?:)
140 (= (aref parse-time-elt 5) ?:)))
142 ((8 7) parse-time-zoneinfo
143 ,#'(lambda () (car parse-time-val))
144 ,#'(lambda () (cadr parse-time-val)))
147 (and (stringp parse-time-elt)
148 (= 5 (length parse-time-elt))
149 (or (= (aref parse-time-elt 0) ?+)
150 (= (aref parse-time-elt 0) ?-))))
151 ,#'(lambda () (* 60 (+ (parse-integer parse-time-elt 3 5)
152 (* 60 (parse-integer parse-time-elt 1 3)))
153 (if (= (aref parse-time-elt 0) ?-) -1 1))))
155 ,#'(lambda () (and (stringp parse-time-elt)
156 (= (length parse-time-elt) 10)
157 (= (aref parse-time-elt 4) ?-)
158 (= (aref parse-time-elt 7) ?-)))
161 ,#'(lambda () (and (stringp parse-time-elt)
162 (= (length parse-time-elt) 5)
163 (= (aref parse-time-elt 2) ?:)))
166 ,#'(lambda () (and (stringp parse-time-elt)
167 (= (length parse-time-elt) 4)
168 (= (aref parse-time-elt 1) ?:)))
171 ,#'(lambda () (and (stringp parse-time-elt)
172 (= (length parse-time-elt) 7)
173 (= (aref parse-time-elt 1) ?:)))
175 ((5) (50 110) ,#'(lambda () (+ 1900 parse-time-elt)))
176 ((5) (0 49) ,#'(lambda () (+ 2000 parse-time-elt))))
180 (defun parse-time-string (string)
185 (temp (parse-time-tokenize (downcase string))))
187 (let ((parse-time-elt (pop temp))
188 (rules parse-time-rules)
194 (parse-time-val))
196 (setq parse-time-val (cond ((and (consp predicate)
199 (and (numberp parse-time-elt)
200 (<= (car predicate) parse-time-elt)
201 (<= parse-time-elt (cadr predicate))
202 parse-time-elt))
204 (cdr (assoc parse-time-elt
212 (parse-integer
213 parse-time-elt
217 (or new-val parse-time-val)))))))))
220 (provide 'parse-time)
223 ;;; parse-time.el ends here