From 56e540f0a8ce84ece64f95971cddd063c4232ac8 Mon Sep 17 00:00:00 2001 From: Troy Brandt Date: Fri, 23 May 2014 17:55:52 -0700 Subject: [PATCH 1/2] Break the start and end times by space instead of with --> This fixes #877 --- src/js/tracks.js | 4 ++-- test/unit/tracks.js | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/js/tracks.js b/src/js/tracks.js index d2ac76fb08..f0aa2be1d6 100644 --- a/src/js/tracks.js +++ b/src/js/tracks.js @@ -482,9 +482,9 @@ vjs.TextTrack.prototype.parseCues = function(srcContent) { }; // Timing line - time = line.split(' --> '); + time = line.split(' '); cue.startTime = this.parseCueTime(time[0]); - cue.endTime = this.parseCueTime(time[1]); + cue.endTime = this.parseCueTime(time[2]); // Additional lines - Cue Text text = []; diff --git a/test/unit/tracks.js b/test/unit/tracks.js index 8282f7ed34..601490e291 100644 --- a/test/unit/tracks.js +++ b/test/unit/tracks.js @@ -21,10 +21,6 @@ test('cue time parsing', function() { equal(parse('11:11'), 671, 'Only minutes and seconds (11:11)'); equal(parse('11:11:11'), 40271, 'Hours, minutes, seconds (11:11:11)'); equal(parse('11:11:11.111'), 40271.111, 'Hours, minutes, seconds, decimals (11:11:11.111)'); - - // Uncommment to test a fix for #877 - // equal(parse('11:11 line:90%'), 671, 'minutes, seconds with flags'); - // equal(parse('11:11:11 line:90%'), 40271, 'hours, minutes, seconds with flags'); }); test('cue parsing', function() { From d1896913e69b58c611ef50853f0ee627f7824655 Mon Sep 17 00:00:00 2001 From: Troy Brandt Date: Wed, 28 May 2014 23:48:33 -0700 Subject: [PATCH 2/2] When breaking the cue time line apart, split on one or more tabs and/or spaces fixes #183 Uncommented tests, added new ones for multi and mixed whitespace cases --- src/js/tracks.js | 2 +- test/unit/tracks.js | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/js/tracks.js b/src/js/tracks.js index f0aa2be1d6..d2759c9dca 100644 --- a/src/js/tracks.js +++ b/src/js/tracks.js @@ -482,7 +482,7 @@ vjs.TextTrack.prototype.parseCues = function(srcContent) { }; // Timing line - time = line.split(' '); + time = line.split(/[\t ]+/); cue.startTime = this.parseCueTime(time[0]); cue.endTime = this.parseCueTime(time[2]); diff --git a/test/unit/tracks.js b/test/unit/tracks.js index 601490e291..79794167eb 100644 --- a/test/unit/tracks.js +++ b/test/unit/tracks.js @@ -39,10 +39,15 @@ test('cue parsing', function() { equal(mockTrack.cues_[0].endTime, 4.11, 'Cue end time w/ spaces'); equal(mockTrack.cues_[0].text, 'Text line 1', 'Cue text'); - // Uncomment to test a fix for #183 - // mockTrack.reset(); // reset mock track - // var timeWithTabs = vttHead + '00:00.700\t-->\t00:04.110\nText line 1'; - // mockTrack.parseCues(timeWithTabs); - // equal(mockTrack.cues_[0].startTime, 0.7, 'Cue start time w/ spaces'); - // equal(mockTrack.cues_[0].endTime, 4.11, 'Cue end time w/ spaces'); + mockTrack.reset(); // reset mock track + var timeWithTabs = vttHead + '00:00.700\t-->\t00:04.110\nText line 1'; + mockTrack.parseCues(timeWithTabs); + equal(mockTrack.cues_[0].startTime, 0.7, 'Cue start time w/ spaces'); + equal(mockTrack.cues_[0].endTime, 4.11, 'Cue end time w/ spaces'); + + mockTrack.reset(); // reset mock track + var timeWithMixedWhiteSpace = vttHead + '00:00.700 -->\t 00:04.110\nText line 1'; + mockTrack.parseCues(timeWithMixedWhiteSpace); + equal(mockTrack.cues_[0].startTime, 0.7, 'Cue start time w/ spaces'); + equal(mockTrack.cues_[0].endTime, 4.11, 'Cue end time w/ spaces'); });