1. Assimilated youtube regex's

2. Added youtube regex tests
This commit is contained in:
Bobby Richter 2011-05-06 22:54:26 -04:00
Родитель d44927ab3a
Коммит 3c61e384ac
3 изменённых файлов: 45 добавлений и 6 удалений

Просмотреть файл

@ -45,8 +45,7 @@ var onYouTubePlayerReady;
YOUTUBE_STATE_BUFFERING = 3,
YOUTUBE_STATE_CUED = 5;
var uriRegex = /^[^v]+v.(.{11}).*/,
urlRegex = /^[^d]+d.(.{11}).*/;
var urlRegex = /(\/e\/|be\/|\/embed\/|\/watch\?v=)([a-zA-Z0-9_]{11})/;
// Collection of all Youtube players
var registry = {},
@ -65,7 +64,7 @@ var onYouTubePlayerReady;
var matches = urlRegex.exec( url );
// Return id, which comes after first equals sign
return matches ? matches[1] : "";
return matches ? matches[2] : "";
}
// Extract the id from a player url
@ -74,10 +73,10 @@ var onYouTubePlayerReady;
return;
}
var matches = uriRegex.exec( url );
var matches = urlRegex.exec( url );
// Return id, which comes after first equals sign
return matches ? matches[1] : "";
return matches ? matches[2] : "";
}
function getPlayerAddress( vidId, playerId ) {
@ -196,7 +195,7 @@ var onYouTubePlayerReady;
this.duration = 0;
this.vidId = extractIdFromUrl( url ) || extractIdFromUri( url );
if ( !this.vidId ) {
throw "Could not find video id";
}

Просмотреть файл

@ -30,6 +30,7 @@
</p>
<div id="video" style="width: 360px; height: 300px" ></div>
<div id="video2" style="width: 360px; height: 300px" ></div>
<div id="video3" style="width: 360px; height: 300px" ></div>
</body>
</html>

Просмотреть файл

@ -185,3 +185,42 @@ test( "Popcorn YouTube Plugin Url and Duration Tests", function() {
popcorn.play();
});
test( "Popcorn YouTube Plugin Url Regex Test", function() {
QUnit.reset();
var urlTests = [
{ name: 'standard',
url: 'http://www.youtube.com/watch?v=9oar9glUCL0',
},
{ name: 'share url',
url: 'http://youtu.be/9oar9glUCL0',
},
{ name: 'long embed',
url: 'http://www.youtube.com/embed/9oar9glUCL0',
},
{ name: 'short embed',
url: 'http://www.youtube.com/e/9oar9glUCL0',
},
];
expect( urlTests.length );
stop( 10000 );
for ( var t in urlTests ) {
var urlTest = urlTests[t],
popcorn = Popcorn( Popcorn.youtube( 'video3', urlTest.url ) );
equals( popcorn.video.vidId, '9oar9glUCL0', 'Video id is correct for ' + urlTest.name );
popcorn.pause();
// Get rid of the youtube object inside the video3, to keep things simple
var div = document.getElementById('video3');
div.removeChild(div.firstChild);
}
start();
});