]> source.dussan.org Git - nextcloud-server.git/commitdiff
Move compatibility functions to compatibility.js and add two more.
authorThomas Tanghus <thomas@tanghus.net>
Sat, 6 Apr 2013 20:37:15 +0000 (22:37 +0200)
committerThomas Tanghus <thomas@tanghus.net>
Sat, 6 Apr 2013 20:37:15 +0000 (22:37 +0200)
core/js/compatibility.js
core/js/js.js

index 0cfeefab87128329f43dceb35c473fc806c70ca4..cc37949409d3585e2acb3f1e49b38652ed053d60 100644 (file)
@@ -1,3 +1,107 @@
+/**
+ * implement Object.create for browsers without native support
+ */
+if (typeof Object.create !== 'function') {
+       Object.create = function (o) {
+               function F() {}
+               F.prototype = o;
+               return new F();
+       };
+}
+
+/**
+ * implement Object.keys for browsers without native support
+ */
+if (typeof Object.keys !== 'function') {
+       Object.keys = function(o) {
+               if (o !== Object(o)) {
+                       throw new TypeError('Object.keys called on a non-object');
+               }
+               var k=[],p;
+               for (p in o) {
+                       if (Object.prototype.hasOwnProperty.call(o,p)) {
+                               k.push(p);
+                       }
+               }
+               return k;
+       }
+}
+
+/**
+ * implement Array.filter for browsers without native support
+ */
+if (!Array.prototype.filter) {
+       Array.prototype.filter = function(fun /*, thisp*/) {
+               var len = this.length >>> 0;
+               if (typeof fun !== "function"){
+                       throw new TypeError();
+               }
+
+               var res = [];
+               var thisp = arguments[1];
+               for (var i = 0; i < len; i++) {
+                       if (i in this) {
+                               var val = this[i]; // in case fun mutates this
+                               if (fun.call(thisp, val, i, this))
+                                       res.push(val);
+                       }
+               }
+               return res;
+       };
+}
+
+/**
+ * implement Array.indexOf for browsers without native support
+ */
+if (!Array.prototype.indexOf){
+       Array.prototype.indexOf = function(elt /*, from*/)
+       {
+               var len = this.length;
+
+               var from = Number(arguments[1]) || 0;
+               from = (from < 0) ? Math.ceil(from) : Math.floor(from);
+               if (from < 0){
+                       from += len;
+               }
+
+               for (; from < len; from++)
+               {
+                       if (from in this && this[from] === elt){
+                               return from;
+                       }
+               }
+               return -1;
+       };
+}
+
+/**
+ * implement Array.map for browsers without native support
+ */
+if (!Array.prototype.map){
+       Array.prototype.map = function(fun /*, thisp */){
+               "use strict";
+
+               if (this === void 0 || this === null){
+                       throw new TypeError();
+               }
+
+               var t = Object(this);
+               var len = t.length >>> 0;
+               if (typeof fun !== "function"){
+                       throw new TypeError();
+               }
+
+               var res = new Array(len);
+               var thisp = arguments[1];
+               for (var i = 0; i < len; i++){
+                       if (i in t){
+                               res[i] = fun.call(thisp, t[i], i, t);
+                       }
+               }
+
+               return res;
+       };
+}
 
 //https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/bind
 if (!Function.prototype.bind) {
index b237c6fcf5b2a7fb60b071c166763cc8403ec71e..e1fbd04a8da4ef3f0e13bc351f2aae91f42f8b8e 100644 (file)
@@ -439,52 +439,6 @@ if(typeof localStorage !=='undefined' && localStorage !== null){
        };
 }
 
-/**
- * implement Array.filter for browsers without native support
- */
-if (!Array.prototype.filter) {
-       Array.prototype.filter = function(fun /*, thisp*/) {
-               var len = this.length >>> 0;
-               if (typeof fun !== "function"){
-                       throw new TypeError();
-               }
-
-               var res = [];
-               var thisp = arguments[1];
-               for (var i = 0; i < len; i++) {
-                       if (i in this) {
-                               var val = this[i]; // in case fun mutates this
-                               if (fun.call(thisp, val, i, this))
-                                       res.push(val);
-                       }
-               }
-               return res;
-       };
-}
-/**
- * implement Array.indexOf for browsers without native support
- */
-if (!Array.prototype.indexOf){
-       Array.prototype.indexOf = function(elt /*, from*/)
-       {
-               var len = this.length;
-
-               var from = Number(arguments[1]) || 0;
-               from = (from < 0) ? Math.ceil(from) : Math.floor(from);
-               if (from < 0){
-                       from += len;
-               }
-
-               for (; from < len; from++)
-               {
-                       if (from in this && this[from] === elt){
-                               return from;
-                       }
-               }
-               return -1;
-       };
-}
-
 /**
  * check if the browser support svg images
  */
@@ -704,32 +658,6 @@ $(document).ready(function(){
        });
 });
 
-if (!Array.prototype.map){
-       Array.prototype.map = function(fun /*, thisp */){
-               "use strict";
-
-               if (this === void 0 || this === null){
-                       throw new TypeError();
-               }
-
-               var t = Object(this);
-               var len = t.length >>> 0;
-               if (typeof fun !== "function"){
-                       throw new TypeError();
-               }
-
-               var res = new Array(len);
-               var thisp = arguments[1];
-               for (var i = 0; i < len; i++){
-                       if (i in t){
-                               res[i] = fun.call(thisp, t[i], i, t);
-                       }
-               }
-
-               return res;
-       };
-}
-
 /**
  * Filter Jquery selector by attribute value
  */