vendor/assets/javascripts/webshims/shims/es6.js in webshims-rails-1.14.6 vs vendor/assets/javascripts/webshims/shims/es6.js in webshims-rails-1.15.2

- old
+ new

@@ -1,13 +1,15 @@ -// ES6-shim 0.8.0 (c) 2013 Paul Miller (paulmillr.com) +// ES6-shim 0.15.0 (c) 2013-2014 Paul Miller (http://paulmillr.com) // ES6-shim may be freely distributed under the MIT license. // For more details and documentation: // https://github.com/paulmillr/es6-shim/ + webshim.register('es6', function($, webshim, window, document, undefined){ 'use strict'; + var isCallableWithoutNew = function(func) { try { func(); } catch (e) { return false; } return true; }; @@ -97,11 +99,11 @@ // This is a private name in the es6 spec, equal to '[Symbol.iterator]' // we're going to use an arbitrary _-prefixed name to make our shims // work properly with each other, even though we don't have full Iterator // support. That is, `Array.from(map.keys())` will work, but we don't // pretend to export a "real" Iterator interface. - var $iterator$ = (typeof Symbol === 'object' && Symbol.iterator) || + var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) || '_es6shim_iterator_'; // Firefox ships a partial implementation using the name @@iterator. // https://bugzilla.mozilla.org/show_bug.cgi?id=907077#c14 // So use that name if we detect it. if (globals.Set && typeof new globals.Set()['@@iterator'] === 'function') { @@ -326,12 +328,12 @@ str = bits.join(''); // Bits to bytes bytes = []; while (str.length) { - bytes.push(parseInt(str.substring(0, 8), 2)); - str = str.substring(8); + bytes.push(parseInt(str.slice(0, 8), 2)); + str = str.slice(8); } return bytes; } function unpackIEEE754(bytes, ebits, fbits) { @@ -349,13 +351,13 @@ bits.reverse(); str = bits.join(''); // Unpack sign, exponent, fraction bias = (1 << (ebits - 1)) - 1; - s = parseInt(str.substring(0, 1), 2) ? -1 : 1; - e = parseInt(str.substring(1, 1 + ebits), 2); - f = parseInt(str.substring(1 + ebits), 2); + s = parseInt(str.slice(0, 1), 2) ? -1 : 1; + e = parseInt(str.slice(1, 1 + ebits), 2); + f = parseInt(str.slice(1 + ebits), 2); // Produce number if (e === (1 << ebits) - 1) { return f !== 0 ? NaN : s * Infinity; } else if (e > 0) { @@ -386,11 +388,11 @@ } return conversions; }()); defineProperties(String, { - fromCodePoint: function() { + fromCodePoint: function(_) { // length = 1 var points = _slice.call(arguments, 0, arguments.length); var result = []; var next; for (var i = 0, length = points.length; i < length; i++) { next = Number(points[i]); @@ -675,19 +677,21 @@ } return o; }, fill: function(value) { - var start = arguments[1], end = arguments[2]; // fill.length===1 + var start = arguments.length > 1 ? arguments[1] : undefined; + var end = arguments.length > 2 ? arguments[2] : undefined; var O = ES.ToObject(this); var len = ES.ToLength(O.length); - start = ES.ToInteger(start===undefined ? 0 : start); - end = ES.ToInteger(end===undefined ? len : end); + start = ES.ToInteger(start === undefined ? 0 : start); + end = ES.ToInteger(end === undefined ? len : end); var relativeStart = start < 0 ? Math.max(len + start, 0) : Math.min(start, len); + var relativeEnd = end < 0 ? len + end : end; - for (var i = relativeStart; i < len && i < end; ++i) { + for (var i = relativeStart; i < len && i < relativeEnd; ++i) { O[i] = value; } return O; }, @@ -753,13 +757,11 @@ isFinite: function(value) { return typeof value === 'number' && global_isFinite(value); }, isInteger: function(value) { - return typeof value === 'number' && - !Number.isNaN(value) && - Number.isFinite(value) && + return Number.isFinite(value) && ES.ToInteger(value) === value; }, isSafeInteger: function(value) { return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER; @@ -811,24 +813,17 @@ assign: function(target, source) { if (!ES.TypeIsObject(target)) { throw new TypeError('target must be an object'); } return Array.prototype.reduce.call(arguments, function(target, source) { - if (!ES.TypeIsObject(source)) { - throw new TypeError('source must be an object'); - } - return Object.keys(source).reduce(function(target, key) { + return Object.keys(Object(source)).reduce(function(target, key) { target[key] = source[key]; return target; }, target); }); }, - getOwnPropertyKeys: function(subject) { - return Object.keys(subject); - }, - is: function(a, b) { return ES.SameValue(a, b); }, // 19.1.3.9 @@ -953,11 +948,10 @@ }, clz32: function(value) { // See https://bugs.ecmascript.org/show_bug.cgi?id=2465 value = Number(value); - if (Number.isNaN(value)) return NaN; var number = ES.ToUint32(value); if (number === 0) { return 32; } return 32 - (number).toString(2).length; @@ -1062,10 +1056,12 @@ return number < 0 ? -Math.floor(-number) : Math.floor(number); }, imul: function(x, y) { // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul + x = ES.ToUint32(x); + y = ES.ToUint32(y); var ah = (x >>> 16) & 0xffff; var al = x & 0xffff; var bh = (y >>> 16) & 0xffff; var bl = y & 0xffff; // the shift by 0 fixes the sign on the high part @@ -1521,11 +1517,11 @@ return { value: undefined, done: true }; } }; addIterator(MapIterator.prototype); - function Map() { + function Map(iterable) { var map = this; map = emulateES6construct(map); if (!map._es6map) { throw new TypeError('bad map'); } @@ -1539,11 +1535,10 @@ '_storage': emptyObject(), '_size': 0 }); // Optionally initialize map from iterable - var iterable = arguments[0]; if (iterable !== undefined && iterable !== null) { var it = ES.GetIterator(iterable); var adder = map.set; if (!ES.IsCallable(adder)) { throw new TypeError('bad map'); } while (true) { @@ -1707,11 +1702,11 @@ Set: (function() { // Creating a Map is expensive. To speed up the common case of // Sets containing only string or numeric keys, we use an object // as backing storage and lazily create a full Map only when // required. - var SetShim = function Set() { + var SetShim = function Set(iterable) { var set = this; set = emulateES6construct(set); if (!set._es6set) { throw new TypeError('bad set'); } @@ -1720,11 +1715,10 @@ '[[SetData]]': null, '_storage': emptyObject() }); // Optionally initialize map from iterable - var iterable = arguments[0]; if (iterable !== undefined && iterable !== null) { var it = ES.GetIterator(iterable); var adder = set.add; if (!ES.IsCallable(adder)) { throw new TypeError('bad set'); } while (true) { @@ -1752,10 +1746,10 @@ if (!set['[[SetData]]']) { var m = set['[[SetData]]'] = new collectionShims.Map(); Object.keys(set._storage).forEach(function(k) { // fast check for leading '$' if (k.charCodeAt(0) === 36) { - k = k.substring(1); + k = k.slice(1); } else { k = +k; } m.set(k, k); });