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);
});