mediaelement_rails 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +8 -0
- data/app/assets/javascripts/mediaelement_rails/mediaelement.js +77 -31
- data/app/assets/javascripts/mediaelement_rails/mediaelementplayer.js +59 -25
- data/app/assets/plugins/mediaelement_rails/flashmediaelement-cdn.swf +0 -0
- data/app/assets/plugins/mediaelement_rails/flashmediaelement.swf +0 -0
- data/app/assets/stylesheets/mediaelement_rails/mediaelementplayer.css.erb +1 -1
- data/lib/mediaelement_rails/version.rb +1 -1
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23365c544c82660f323c1daabc33b00f6181dffb
|
4
|
+
data.tar.gz: a8c9ff738d46f26e0ec107d5284e750bef83fadd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e4207d1706fe455887273959db1e042ae32ec28ab3726bf0828b67443035951b741f9c48d80031eda3488627c85317a31f28018d2b22e84171dce52211bc68f
|
7
|
+
data.tar.gz: 6462b9298fd2670d65ccd8df2e97efc954f6b0ab6b2ab43cf5bf9f50d267fce94ef89749b6337cb2e9134de9a354dcc332afe04f51cc5b4a6c74ac67a55dad9d
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -50,4 +50,12 @@ Nothing special! This project includes all assets you might need.
|
|
50
50
|
- Add support for `flashmediaelement-cdn.swf` for cases when the assets are hosted on a different domain than the rails application.
|
51
51
|
- Setup [appraisal](https://github.com/thoughtbot/appraisal) gem to test against rails 3.x and 4.x
|
52
52
|
|
53
|
+
## Maintainers ##
|
54
|
+
|
55
|
+
- [Mark Oleson](https://github.com/fusion2004) - current
|
56
|
+
- [Tobias Schlottke](https://github.com/tobsch)
|
57
|
+
- [Pete Browne](https://github.com/petebrowne)
|
58
|
+
|
59
|
+
## License ##
|
60
|
+
|
53
61
|
This project rocks and uses MIT-LICENSE.
|
@@ -7,7 +7,7 @@
|
|
7
7
|
* for browsers that don't understand HTML5 or can't play the provided codec
|
8
8
|
* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
|
9
9
|
*
|
10
|
-
* Copyright 2010-
|
10
|
+
* Copyright 2010-2014, John Dyer (http://j.hn)
|
11
11
|
* License: MIT
|
12
12
|
*
|
13
13
|
*/
|
@@ -15,7 +15,7 @@
|
|
15
15
|
var mejs = mejs || {};
|
16
16
|
|
17
17
|
// version number
|
18
|
-
mejs.version = '2.
|
18
|
+
mejs.version = '2.14.2';
|
19
19
|
|
20
20
|
|
21
21
|
// player number (for missing, same id attr)
|
@@ -535,7 +535,7 @@ mejs.PluginMediaElement.prototype = {
|
|
535
535
|
// HTML5 methods
|
536
536
|
play: function () {
|
537
537
|
if (this.pluginApi != null) {
|
538
|
-
if (this.pluginType == 'youtube') {
|
538
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
539
539
|
this.pluginApi.playVideo();
|
540
540
|
} else {
|
541
541
|
this.pluginApi.playMedia();
|
@@ -545,7 +545,7 @@ mejs.PluginMediaElement.prototype = {
|
|
545
545
|
},
|
546
546
|
load: function () {
|
547
547
|
if (this.pluginApi != null) {
|
548
|
-
if (this.pluginType == 'youtube') {
|
548
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
549
549
|
} else {
|
550
550
|
this.pluginApi.loadMedia();
|
551
551
|
}
|
@@ -555,7 +555,7 @@ mejs.PluginMediaElement.prototype = {
|
|
555
555
|
},
|
556
556
|
pause: function () {
|
557
557
|
if (this.pluginApi != null) {
|
558
|
-
if (this.pluginType == 'youtube') {
|
558
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
559
559
|
this.pluginApi.pauseVideo();
|
560
560
|
} else {
|
561
561
|
this.pluginApi.pauseMedia();
|
@@ -567,7 +567,7 @@ mejs.PluginMediaElement.prototype = {
|
|
567
567
|
},
|
568
568
|
stop: function () {
|
569
569
|
if (this.pluginApi != null) {
|
570
|
-
if (this.pluginType == 'youtube') {
|
570
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
571
571
|
this.pluginApi.stopVideo();
|
572
572
|
} else {
|
573
573
|
this.pluginApi.stopMedia();
|
@@ -637,7 +637,7 @@ mejs.PluginMediaElement.prototype = {
|
|
637
637
|
},
|
638
638
|
setCurrentTime: function (time) {
|
639
639
|
if (this.pluginApi != null) {
|
640
|
-
if (this.pluginType == 'youtube') {
|
640
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
641
641
|
this.pluginApi.seekTo(time);
|
642
642
|
} else {
|
643
643
|
this.pluginApi.setCurrentTime(time);
|
@@ -651,7 +651,7 @@ mejs.PluginMediaElement.prototype = {
|
|
651
651
|
setVolume: function (volume) {
|
652
652
|
if (this.pluginApi != null) {
|
653
653
|
// same on YouTube and MEjs
|
654
|
-
if (this.pluginType == 'youtube') {
|
654
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
655
655
|
this.pluginApi.setVolume(volume * 100);
|
656
656
|
} else {
|
657
657
|
this.pluginApi.setVolume(volume);
|
@@ -661,7 +661,7 @@ mejs.PluginMediaElement.prototype = {
|
|
661
661
|
},
|
662
662
|
setMuted: function (muted) {
|
663
663
|
if (this.pluginApi != null) {
|
664
|
-
if (this.pluginType == 'youtube') {
|
664
|
+
if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
|
665
665
|
if (muted) {
|
666
666
|
this.pluginApi.mute();
|
667
667
|
} else {
|
@@ -719,7 +719,7 @@ mejs.PluginMediaElement.prototype = {
|
|
719
719
|
var callbacks = this.events[eventName];
|
720
720
|
if (!callbacks) return true;
|
721
721
|
if (!callback) { this.events[eventName] = []; return true; }
|
722
|
-
for (i = 0; i < callbacks.length; i++) {
|
722
|
+
for (var i = 0; i < callbacks.length; i++) {
|
723
723
|
if (callbacks[i] === callback) {
|
724
724
|
this.events[eventName].splice(i, 1);
|
725
725
|
return true;
|
@@ -1051,7 +1051,9 @@ mejs.HtmlMediaElementShim = {
|
|
1051
1051
|
// normal check
|
1052
1052
|
if (htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
|
1053
1053
|
// special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
|
1054
|
-
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
|
1054
|
+
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
|
1055
|
+
// special case for m4a supported by detecting mp4 support
|
1056
|
+
|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') {
|
1055
1057
|
result.method = 'native';
|
1056
1058
|
result.url = mediaFiles[i].url;
|
1057
1059
|
break;
|
@@ -1152,6 +1154,7 @@ mejs.HtmlMediaElementShim = {
|
|
1152
1154
|
switch (ext) {
|
1153
1155
|
case 'mp4':
|
1154
1156
|
case 'm4v':
|
1157
|
+
case 'm4a':
|
1155
1158
|
return 'mp4';
|
1156
1159
|
case 'webm':
|
1157
1160
|
case 'webma':
|
@@ -1217,8 +1220,8 @@ mejs.HtmlMediaElementShim = {
|
|
1217
1220
|
|
1218
1221
|
// check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
|
1219
1222
|
node = htmlMediaElement.parentNode;
|
1220
|
-
while (node !== null && node.tagName.toLowerCase()
|
1221
|
-
if (node.parentNode.tagName.toLowerCase()
|
1223
|
+
while (node !== null && node.tagName.toLowerCase() !== 'body' && node.parentNode != null) {
|
1224
|
+
if (node.parentNode.tagName.toLowerCase() === 'p') {
|
1222
1225
|
node.parentNode.parentNode.insertBefore(node, node.parentNode);
|
1223
1226
|
break;
|
1224
1227
|
}
|
@@ -1345,9 +1348,18 @@ mejs.HtmlMediaElementShim = {
|
|
1345
1348
|
case 'youtube':
|
1346
1349
|
|
1347
1350
|
|
1348
|
-
var
|
1351
|
+
var videoId;
|
1352
|
+
// youtu.be url from share button
|
1353
|
+
if (playback.url.lastIndexOf("youtu.be") != -1) {
|
1354
|
+
videoId = playback.url.substr(playback.url.lastIndexOf('/')+1);
|
1355
|
+
if (videoId.indexOf('?') != -1) {
|
1356
|
+
videoId = videoId.substr(0, videoId.indexOf('?'));
|
1357
|
+
}
|
1358
|
+
}
|
1359
|
+
else {
|
1349
1360
|
videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
|
1350
|
-
|
1361
|
+
}
|
1362
|
+
youtubeSettings = {
|
1351
1363
|
container: container,
|
1352
1364
|
containerId: container.id,
|
1353
1365
|
pluginMediaElement: pluginMediaElement,
|
@@ -1367,23 +1379,57 @@ mejs.HtmlMediaElementShim = {
|
|
1367
1379
|
|
1368
1380
|
// DEMO Code. Does NOT work.
|
1369
1381
|
case 'vimeo':
|
1370
|
-
|
1371
|
-
|
1382
|
+
var player_id = pluginid + "_player";
|
1372
1383
|
pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
|
1373
1384
|
|
1374
|
-
container.innerHTML ='<iframe src="
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1385
|
+
container.innerHTML ='<iframe src="//player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '"></iframe>';
|
1386
|
+
if (typeof($f) == 'function') { // froogaloop available
|
1387
|
+
var player = $f(container.childNodes[0]);
|
1388
|
+
player.addEvent('ready', function() {
|
1389
|
+
player.playVideo = function() {
|
1390
|
+
player.api('play');
|
1391
|
+
};
|
1392
|
+
player.pauseVideo = function() {
|
1393
|
+
player.api('pause');
|
1394
|
+
};
|
1395
|
+
player.seekTo = function(seconds) {
|
1396
|
+
player.api('seekTo', seconds);
|
1397
|
+
};
|
1398
|
+
function createEvent(player, pluginMediaElement, eventName, e) {
|
1399
|
+
var obj = {
|
1400
|
+
type: eventName,
|
1401
|
+
target: pluginMediaElement
|
1402
|
+
};
|
1403
|
+
if (eventName == 'timeupdate') {
|
1404
|
+
pluginMediaElement.currentTime = obj.currentTime = e.seconds;
|
1405
|
+
pluginMediaElement.duration = obj.duration = e.duration;
|
1406
|
+
}
|
1407
|
+
pluginMediaElement.dispatchEvent(obj.type, obj);
|
1408
|
+
}
|
1409
|
+
player.addEvent('play', function() {
|
1410
|
+
createEvent(player, pluginMediaElement, 'play');
|
1411
|
+
createEvent(player, pluginMediaElement, 'playing');
|
1412
|
+
});
|
1413
|
+
player.addEvent('pause', function() {
|
1414
|
+
createEvent(player, pluginMediaElement, 'pause');
|
1415
|
+
});
|
1416
|
+
|
1417
|
+
player.addEvent('finish', function() {
|
1418
|
+
createEvent(player, pluginMediaElement, 'ended');
|
1419
|
+
});
|
1420
|
+
player.addEvent('playProgress', function(e) {
|
1421
|
+
createEvent(player, pluginMediaElement, 'timeupdate', e);
|
1422
|
+
});
|
1423
|
+
pluginMediaElement.pluginApi = player;
|
1424
|
+
|
1425
|
+
// init mejs
|
1426
|
+
mejs.MediaPluginBridge.initPlugin(pluginid);
|
1427
|
+
|
1428
|
+
});
|
1429
|
+
}
|
1430
|
+
else {
|
1431
|
+
console.warn("You need to include froogaloop for vimeo to work");
|
1432
|
+
}
|
1387
1433
|
break;
|
1388
1434
|
}
|
1389
1435
|
// hide original element
|
@@ -1539,7 +1585,7 @@ mejs.YouTubeApi = {
|
|
1539
1585
|
},
|
1540
1586
|
length: 1
|
1541
1587
|
};
|
1542
|
-
|
1588
|
+
|
1543
1589
|
}
|
1544
1590
|
|
1545
1591
|
// send event up the chain
|
@@ -532,8 +532,8 @@ if (typeof jQuery != 'undefined') {
|
|
532
532
|
} catch (e) {
|
533
533
|
// TODO: report control error
|
534
534
|
//throw e;
|
535
|
-
|
536
|
-
|
535
|
+
|
536
|
+
|
537
537
|
}
|
538
538
|
}
|
539
539
|
}
|
@@ -570,7 +570,7 @@ if (typeof jQuery != 'undefined') {
|
|
570
570
|
|
571
571
|
// create callback here since it needs access to current
|
572
572
|
// MediaElement object
|
573
|
-
|
573
|
+
t.clickToPlayPauseCallback = function() {
|
574
574
|
//
|
575
575
|
|
576
576
|
if (t.options.clickToPlayPause) {
|
@@ -771,6 +771,11 @@ if (typeof jQuery != 'undefined') {
|
|
771
771
|
parentWidth = t.container.parent().closest(':visible').width(),
|
772
772
|
newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight;
|
773
773
|
|
774
|
+
// When we use percent, the newHeight can't be calculated so we get the container height
|
775
|
+
if(isNaN(newHeight)) {
|
776
|
+
newHeight = t.container.parent().closest(':visible').height();
|
777
|
+
}
|
778
|
+
|
774
779
|
if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
|
775
780
|
parentWidth = $(window).width();
|
776
781
|
newHeight = $(window).height();
|
@@ -830,7 +835,14 @@ if (typeof jQuery != 'undefined') {
|
|
830
835
|
total = t.controls.find('.mejs-time-total'),
|
831
836
|
current = t.controls.find('.mejs-time-current'),
|
832
837
|
loaded = t.controls.find('.mejs-time-loaded'),
|
833
|
-
others = rail.siblings()
|
838
|
+
others = rail.siblings(),
|
839
|
+
lastControl = others.last(),
|
840
|
+
lastControlPosition = null;
|
841
|
+
|
842
|
+
// skip calculation if hidden
|
843
|
+
if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) {
|
844
|
+
return;
|
845
|
+
}
|
834
846
|
|
835
847
|
|
836
848
|
// allow the size to come from custom CSS
|
@@ -854,12 +866,22 @@ if (typeof jQuery != 'undefined') {
|
|
854
866
|
// fit the rail into the remaining space
|
855
867
|
railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
|
856
868
|
}
|
857
|
-
|
858
|
-
//
|
859
|
-
|
860
|
-
//
|
861
|
-
|
862
|
-
|
869
|
+
|
870
|
+
// resize the rail,
|
871
|
+
// but then check if the last control (say, the fullscreen button) got pushed down
|
872
|
+
// this often happens when zoomed
|
873
|
+
do {
|
874
|
+
// outer area
|
875
|
+
rail.width(railWidth);
|
876
|
+
// dark space
|
877
|
+
total.width(railWidth - (total.outerWidth(true) - total.width()));
|
878
|
+
|
879
|
+
if (lastControl.css('position') != 'absolute') {
|
880
|
+
lastControlPosition = lastControl.position();
|
881
|
+
railWidth--;
|
882
|
+
}
|
883
|
+
} while (lastControlPosition != null && lastControlPosition.top > 0 && railWidth > 0);
|
884
|
+
|
863
885
|
if (t.setProgressRail)
|
864
886
|
t.setProgressRail();
|
865
887
|
if (t.setCurrentRail)
|
@@ -938,7 +960,7 @@ if (typeof jQuery != 'undefined') {
|
|
938
960
|
.bind('click touchstart', function() {
|
939
961
|
if (t.options.clickToPlayPause) {
|
940
962
|
if (media.paused) {
|
941
|
-
|
963
|
+
media.play();
|
942
964
|
}
|
943
965
|
}
|
944
966
|
});
|
@@ -1039,9 +1061,7 @@ if (typeof jQuery != 'undefined') {
|
|
1039
1061
|
|
1040
1062
|
// check if someone clicked outside a player region, then kill its focus
|
1041
1063
|
t.globalBind('click', function(event) {
|
1042
|
-
|
1043
|
-
player.hasFocus = false;
|
1044
|
-
}
|
1064
|
+
player.hasFocus = $(event.target).closest('.mejs-container').length != 0;
|
1045
1065
|
});
|
1046
1066
|
|
1047
1067
|
},
|
@@ -1142,7 +1162,9 @@ if (typeof jQuery != 'undefined') {
|
|
1142
1162
|
// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api.
|
1143
1163
|
delete mejs.players[t.id];
|
1144
1164
|
|
1145
|
-
t.container
|
1165
|
+
if (typeof t.container == 'object') {
|
1166
|
+
t.container.remove();
|
1167
|
+
}
|
1146
1168
|
t.globalUnbind();
|
1147
1169
|
delete t.node.player;
|
1148
1170
|
}
|
@@ -1325,9 +1347,14 @@ if (typeof jQuery != 'undefined') {
|
|
1325
1347
|
timefloat = controls.find('.mejs-time-float'),
|
1326
1348
|
timefloatcurrent = controls.find('.mejs-time-float-current'),
|
1327
1349
|
handleMouseMove = function (e) {
|
1328
|
-
// mouse position relative to the object
|
1329
|
-
|
1330
|
-
|
1350
|
+
// mouse or touch position relative to the object
|
1351
|
+
if (e.originalEvent.changedTouches) {
|
1352
|
+
var x = e.originalEvent.changedTouches[0].pageX;
|
1353
|
+
}else{
|
1354
|
+
var x = e.pageX;
|
1355
|
+
}
|
1356
|
+
|
1357
|
+
var offset = total.offset(),
|
1331
1358
|
width = total.outerWidth(true),
|
1332
1359
|
percentage = 0,
|
1333
1360
|
newTime = 0,
|
@@ -1364,15 +1391,15 @@ if (typeof jQuery != 'undefined') {
|
|
1364
1391
|
// handle clicks
|
1365
1392
|
//controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
|
1366
1393
|
total
|
1367
|
-
.bind('mousedown', function (e) {
|
1368
|
-
// only handle left clicks
|
1369
|
-
if (e.which === 1) {
|
1394
|
+
.bind('mousedown touchstart', function (e) {
|
1395
|
+
// only handle left clicks or touch
|
1396
|
+
if (e.which === 1 || e.which === 0) {
|
1370
1397
|
mouseIsDown = true;
|
1371
1398
|
handleMouseMove(e);
|
1372
|
-
t.globalBind('mousemove.dur', function(e) {
|
1399
|
+
t.globalBind('mousemove.dur touchmove.dur', function(e) {
|
1373
1400
|
handleMouseMove(e);
|
1374
1401
|
});
|
1375
|
-
t.globalBind('mouseup.dur', function (e) {
|
1402
|
+
t.globalBind('mouseup.dur touchend.dur', function (e) {
|
1376
1403
|
mouseIsDown = false;
|
1377
1404
|
timefloat.hide();
|
1378
1405
|
t.globalUnbind('.dur');
|
@@ -1569,7 +1596,7 @@ if (typeof jQuery != 'undefined') {
|
|
1569
1596
|
buildvolume: function(player, controls, layers, media) {
|
1570
1597
|
|
1571
1598
|
// Android and iOS don't support volume controls
|
1572
|
-
if (mejs.MediaFeatures.
|
1599
|
+
if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices)
|
1573
1600
|
return;
|
1574
1601
|
|
1575
1602
|
var t = this,
|
@@ -2103,9 +2130,16 @@ if (typeof jQuery != 'undefined') {
|
|
2103
2130
|
setTimeout(function checkFullscreen() {
|
2104
2131
|
|
2105
2132
|
if (t.isNativeFullScreen) {
|
2133
|
+
var zoomMultiplier = window["devicePixelRatio"] || 1;
|
2134
|
+
// Use a percent error margin since devicePixelRatio is a float and not exact.
|
2135
|
+
var percentErrorMargin = 0.002; // 0.2%
|
2136
|
+
var windowWidth = zoomMultiplier * $(window).width();
|
2137
|
+
var screenWidth = screen.width;
|
2138
|
+
var absDiff = Math.abs(screenWidth - windowWidth);
|
2139
|
+
var marginError = screenWidth * percentErrorMargin;
|
2106
2140
|
|
2107
2141
|
// check if the video is suddenly not really fullscreen
|
2108
|
-
if (
|
2142
|
+
if (absDiff > marginError) {
|
2109
2143
|
// manually exit
|
2110
2144
|
t.exitFullScreen();
|
2111
2145
|
} else {
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mediaelement_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Oleson
|
@@ -10,118 +10,118 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-04-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '3.1'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: jquery-rails
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '1.0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '1.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rails
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '3.1'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '3.1'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: i18n
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - ">="
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: turn
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - ">="
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: sqlite3
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: thor
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
|
-
- -
|
103
|
+
- - ">="
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
version: '0'
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
|
-
- -
|
110
|
+
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
112
|
version: '0'
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rake
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
116
116
|
requirements:
|
117
|
-
- -
|
117
|
+
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- -
|
124
|
+
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
description: A MediaElement gem(engine) for Rails. Makes embedding HTML5 video easy.
|
@@ -133,7 +133,7 @@ executables: []
|
|
133
133
|
extensions: []
|
134
134
|
extra_rdoc_files: []
|
135
135
|
files:
|
136
|
-
- .gitignore
|
136
|
+
- ".gitignore"
|
137
137
|
- CHANGELOG.md
|
138
138
|
- Gemfile
|
139
139
|
- MIT-LICENSE
|
@@ -211,12 +211,12 @@ require_paths:
|
|
211
211
|
- lib
|
212
212
|
required_ruby_version: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
|
-
- -
|
214
|
+
- - ">="
|
215
215
|
- !ruby/object:Gem::Version
|
216
216
|
version: '0'
|
217
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
|
-
- -
|
219
|
+
- - ">="
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
222
|
requirements: []
|