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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e6de3b42c57e45c1a61a60d8ec98c0fd66ee2df4
4
- data.tar.gz: df336f0708e2a50975aa669cd3956ffbb109b89d
3
+ metadata.gz: 23365c544c82660f323c1daabc33b00f6181dffb
4
+ data.tar.gz: a8c9ff738d46f26e0ec107d5284e750bef83fadd
5
5
  SHA512:
6
- metadata.gz: 4c8ebde5252b5680454c8e8cb7fb8e45fcaaf71251aee75c617c95f0971915e2bafb1a9fb67828dae8e185843e11b1b550e3f1d310b828f90358e12fdce0cfbb
7
- data.tar.gz: b3776c5c16c5176593279a4d7b3d6959def7d73eb429b261c9612134403fdeae489aa7d739ded0c34a4897c51ec2bf300e47526a542e09893515bd61e75541a6
6
+ metadata.gz: 7e4207d1706fe455887273959db1e042ae32ec28ab3726bf0828b67443035951b741f9c48d80031eda3488627c85317a31f28018d2b22e84171dce52211bc68f
7
+ data.tar.gz: 6462b9298fd2670d65ccd8df2e97efc954f6b0ab6b2ab43cf5bf9f50d267fce94ef89749b6337cb2e9134de9a354dcc332afe04f51cc5b4a6c74ac67a55dad9d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## Changelog
2
2
 
3
+ ### v0.8
4
+
5
+ - Updated MediaElement.js to 2.14.2
6
+
3
7
  ### v0.7.0
4
8
 
5
9
  - Updated MediaElement.js to 2.13.2
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-2013, John Dyer (http://j.hn)
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.13.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() != 'body') {
1221
- if (node.parentNode.tagName.toLowerCase() == 'p') {
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
- youtubeSettings = {
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="http://player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?portrait=0&byline=0&title=0" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim"></iframe>';
1375
-
1376
- /*
1377
- container.innerHTML =
1378
- '<object width="' + width + '" height="' + height + '" class="mejs-shim">' +
1379
- '<param name="allowfullscreen" value="true" />' +
1380
- '<param name="allowscriptaccess" value="always" />' +
1381
- '<param name="flashvars" value="api=1" />' +
1382
- '<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=' + pluginMediaElement.vimeoid + '&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" />' +
1383
- '<embed src="//vimeo.com/moogaloop.swf?api=1&amp;clip_id=' + pluginMediaElement.vimeoid + '&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="' + width + '" height="' + height + '" class="mejs-shim"></embed>' +
1384
- '</object>';
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
- mejs.MediaElementPlayer.prototype.clickToPlayPauseCallback = function() {
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
- // outer area
859
- rail.width(railWidth);
860
- // dark space
861
- total.width(railWidth - (total.outerWidth(true) - total.width()));
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
- t.play();
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
- if ($(event.target).closest('.mejs-container').length == 0) {
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.remove();
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
- var x = e.pageX,
1330
- offset = total.offset(),
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.hasTouch && this.options.hideVolumeOnTouchDevices)
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 ($(window).width() !== screen.width) {
2142
+ if (absDiff > marginError) {
2109
2143
  // manually exit
2110
2144
  t.exitFullScreen();
2111
2145
  } else {
@@ -187,7 +187,7 @@
187
187
 
188
188
  /* :focus for accessibility */
189
189
  .mejs-controls .mejs-button button:focus {
190
- outline: solid 1px yellow;
190
+ outline: dotted 1px #999;
191
191
  }
192
192
 
193
193
  /* End: CONTROL BAR */
@@ -1,3 +1,3 @@
1
1
  module MediaelementRails
2
- VERSION = '0.7.0'
2
+ VERSION = '0.8.0'
3
3
  end
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.7.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-03-15 00:00:00.000000000 Z
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: []