Function: rng-xsd-convert-duration
rng-xsd-convert-duration is a byte-compiled function defined in
rng-xsd.el.gz.
Signature
(rng-xsd-convert-duration STRING)
Source Code
;; Defined in /usr/src/emacs/lisp/nxml/rng-xsd.el.gz
(defun rng-xsd-convert-duration (string)
(and (string-match rng-xsd-duration-regexp string)
(let ((last (substring string -1)))
(not (or (string= last "P")
(string= last "T"))))
;; years months days hours minutes seconds
(let ((v (make-vector 6 0))
(sign (if (match-beginning 1) -1 1))
(i 0))
(while (< i 6)
(let ((start (match-beginning (+ i 2))))
(when start
(aset v i (* sign
(string-to-number
(substring string
start
(1- (match-end (+ i 2)))))))))
(setq i (1+ i)))
;; Force seconds to be float so that equal works properly.
(aset v 5 (float (aref v 5)))
v)))