]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
some reverse compatibility
authorIsaac Cambron <isaac@isaaccambron.com>
Thu, 24 Jul 2014 22:21:35 +0000 (18:21 -0400)
committerIsaac Cambron <isaac@isaaccambron.com>
Thu, 24 Jul 2014 22:21:35 +0000 (18:21 -0400)
moment.js
tasks/embed_locales.js
test/moment/locale.js

index 60eeb5e425cb3eba168dd22d502df414432d04ae..8d6c6ddac6b392fa14cd2f3a44f4fb35e6e9ad65 100644 (file)
--- a/moment.js
+++ b/moment.js
 
         moment[field] = function (format, index) {
             var i, getter,
-                method = moment.fn._locale[field],
+                method = moment._locale[field],
                 results = [];
 
             if (typeof format === 'number') {
 
             getter = function (i) {
                 var m = moment().utc().set(setter, i);
-                return method.call(moment.fn._locale, m, format || '');
+                return method.call(moment._locale, m, format || '');
             };
 
             if (index != null) {
     }
 
     function loadLocale(name) {
+        var oldLocale = null;
         if (!locales[name] && hasModule) {
             try {
+                oldLocale = moment.locale();
                 require('./locale/' + name);
+                // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
+                moment.locale(oldLocale);
             } catch (e) { }
         }
         return locales[name];
             }
 
             if (data) {
-                moment.duration.fn._locale = moment.fn._locale = data;
+                moment.duration._locale = moment._locale = data;
             }
         }
 
-        return moment.fn._locale._abbr;
+        return moment._locale._abbr;
     };
 
     moment.defineLocale = function (name, values) {
                 locales[name] = new Locale();
             }
             locales[name].set(values);
+
+            // backwards compat for now: also set the locale
+            moment.locale(name);
+
             return locales[name];
         } else {
+            // useful for testing
             delete locales[name];
             return null;
         }
         }
 
         if (!key) {
-            return moment.fn._locale;
+            return moment._locale;
         }
 
         if (!isArray(key)) {
index aef6310444297717494c7dae7da1e8a8d6b39351..dc620a09235170cefa9d09d6f9f7a383d85d61fc 100644 (file)
@@ -17,11 +17,14 @@ module.exports = function (grunt) {
         grunt.file.write(config.dest, modifiedContents);
     });
 
+    var languageReset = 'moment.locale(\'en\');'
+
     function determineEmbeddedContent(files) {
         var embeddedContent = '';
         files.forEach(function (file) {
             embeddedContent += transformFile(file);
         });
+        embeddedContent += '\n    ' + languageReset + '\n';
         return embeddedContent;
     }
 
index c9feb31f4c8bccf7a2ba7ced117ef8bd9f5cb8ab..d46b4200fce97eac3f75eac8df80f2b58eaed282 100644 (file)
@@ -129,7 +129,7 @@ exports.locale = {
     "defineLocale" : function (test) {
         moment.locale("en");
         moment.defineLocale("dude", {months: ["Movember"]});
-        test.equal(moment().locale(), "en", "defineLocale doesn't set it");
+        test.equal(moment().locale(), "dude", "defineLocale also sets it");
         test.equal(moment().locale("dude").locale(), "dude", "defineLocale defines a locale");
         test.done();
     },
@@ -411,6 +411,14 @@ exports.locale = {
 
         test.equal(registered, 'return-this', 'returns the locale configured');
 
+        test.done();
+    },
+
+    "changing the global locale doesn't affect existing instances" : function (test) {
+        moment.locale('en');
+        var mom = moment();
+        moment.locale('pr');
+        test.equal('en', moment.locale());
         test.done();
     }
 };