From: Iskren Chernev Date: Mon, 18 Apr 2016 06:39:23 +0000 (-0700) Subject: Fix indexOf and Object.keys for IE8 X-Git-Tag: 2.13.0~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81859d278cd3fa78f0d25fb5a0b4e4b6e31f2d87;p=thirdparty%2Fmoment.git Fix indexOf and Object.keys for IE8 --- diff --git a/src/lib/locale/locales.js b/src/lib/locale/locales.js index b2386064b..9cf6ef4f7 100644 --- a/src/lib/locale/locales.js +++ b/src/lib/locale/locales.js @@ -4,6 +4,7 @@ import compareArrays from '../utils/compare-arrays'; import { deprecateSimple } from '../utils/deprecate'; import { mergeConfigs } from './set'; import { Locale } from './constructor'; +import keys from '../utils/keys'; // internal storage for locale config files var locales = {}; @@ -159,5 +160,5 @@ export function getLocale (key) { } export function listLocales() { - return Object.keys(locales); + return keys(locales); } diff --git a/src/lib/utils/keys.js b/src/lib/utils/keys.js new file mode 100644 index 000000000..2da4e3228 --- /dev/null +++ b/src/lib/utils/keys.js @@ -0,0 +1,19 @@ +import hasOwnProp from './has-own-prop'; + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +export { keys as default }; diff --git a/src/test/moment/locale.js b/src/test/moment/locale.js index 3d320ad46..186c649df 100644 --- a/src/test/moment/locale.js +++ b/src/test/moment/locale.js @@ -1,6 +1,7 @@ import { module, test } from '../qunit'; import moment from '../../moment'; import each from '../helpers/each'; +import indexOf from '../../lib/utils/index-of'; module('locale', { setup : function () { @@ -157,8 +158,8 @@ test('defineLocale', function (assert) { test('locales', function (assert) { moment.defineLocale('dude', {months: ['Movember']}); - assert.equal(true, !!~moment.locales().indexOf('dude'), 'locales returns an array of defined locales'); - assert.equal(true, !!~moment.locales().indexOf('en'), 'locales should always include english'); + assert.equal(true, !!~indexOf.call(moment.locales(), 'dude'), 'locales returns an array of defined locales'); + assert.equal(true, !!~indexOf.call(moment.locales(), 'en'), 'locales should always include english'); moment.defineLocale('dude', null); });