summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--srt2vtt/subrip.scm14
1 files changed, 9 insertions, 5 deletions
diff --git a/srt2vtt/subrip.scm b/srt2vtt/subrip.scm
index 167aff8..44f118e 100644
--- a/srt2vtt/subrip.scm
+++ b/srt2vtt/subrip.scm
@@ -26,22 +26,26 @@
read-subrips))
(define parse-time
- (let ((regexp (make-regexp "([0-9]+):([0-9]+):([0-9]+),([0-9]+)")))
+ (let ((regexp (make-regexp "^([0-9]+):([0-9]+):([0-9]+),([0-9]+)$")))
(lambda (s)
"Parse the SubRip formatted timestamp in the string S into a 4
element list. Valid input looks like '00:00:03.417'."
(let ((match (regexp-exec regexp s)))
- (map (cut match:substring match <>) '(1 2 3 4))))))
+ (if match
+ (map (cut match:substring match <>) '(1 2 3 4))
+ (error "Invalid SubRip timestamp: " s))))))
(define parse-time-span
- (let ((regexp (make-regexp "([0-9:,]+) --> ([0-9:,]+)")))
+ (let ((regexp (make-regexp "^([0-9:,]+) --> ([0-9:,]+)$")))
(lambda (s)
"Parse the SubRip formatted time span in the string S and return
two values: the start time and the end time. Valid input looks like
'00:00:03.417 --> 00:00:04.936'."
(let ((match (regexp-exec regexp s)))
- (values (parse-time (match:substring match 1))
- (parse-time (match:substring match 2)))))))
+ (if match
+ (values (parse-time (match:substring match 1))
+ (parse-time (match:substring match 2)))
+ (error "Invalid SubRip time range: " s))))))
(define (read-subrip port)
"Read a SubRip formatted subtitle from PORT."