]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Cases month abbreviations
authorVadim Borodean <borodean@gmail.com>
Mon, 22 Jul 2013 00:37:41 +0000 (03:37 +0300)
committerVadim Borodean <borodean@gmail.com>
Mon, 22 Jul 2013 00:37:41 +0000 (03:37 +0300)
Futher reading (in Russian): http://artgorbunov.ru/bb/soviet/20100812/

lang/ru.js
test/lang/ru.js

index 069f6759dc15a6043f59a27512d066bf0f3d9e07..dfc238df3008cab3bd68503b54c8c9ecd22eff7b 100644 (file)
@@ -37,6 +37,19 @@ function monthsCaseReplace(m, format) {
     return months[nounCase][m.month()];
 }
 
+function monthsShortCaseReplace(m, format) {
+    var monthsShort = {
+        'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
+        'accusative': 'янв_фев_мар_апр_май_июня_июля_авг_сен_окт_ноя_дек'.split('_')
+    },
+
+    nounCase = (/D[oD]? *MMMM?/).test(format) ?
+        'accusative' :
+        'nominative';
+
+    return monthsShort[nounCase][m.month()];
+}
+
 function weekdaysCaseReplace(m, format) {
     var weekdays = {
         'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
@@ -52,7 +65,7 @@ function weekdaysCaseReplace(m, format) {
 
 require('../moment').lang('ru', {
     months : monthsCaseReplace,
-    monthsShort : "янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),
+    monthsShort : monthsShortCaseReplace,
     weekdays : weekdaysCaseReplace,
     weekdaysShort : "вск_пнд_втр_срд_чтв_птн_сбт".split("_"),
     weekdaysMin : "вс_пн_вт_ср_чт_пт_сб".split("_"),
index b189b7b6016c61d2349c6a598bf63bedb17a6bd2..dfed0cdba3545ae6f8dd2bf4eac09a7275f4513b 100644 (file)
@@ -19,7 +19,7 @@ exports["lang:ru"] = {
     "parse" : function (test) {
         test.expect(96);
 
-        var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
+        var tests = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
         function equalTest(input, mmm, i) {
             test.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
         }
@@ -115,7 +115,7 @@ exports["lang:ru"] = {
     "format month" : function (test) {
         test.expect(12);
 
-        var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июн_июль июл_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
+        var expected = 'январь янв_февраль фев_март мар_апрель апр_май май_июнь июнь_июль июль_август авг_сентябрь сен_октябрь окт_ноябрь ноя_декабрь дек'.split("_"), i;
         for (i = 0; i < expected.length; i++) {
             test.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
         }
@@ -136,6 +136,20 @@ exports["lang:ru"] = {
         test.done();
     },
 
+    "format month short case" : function (test) {
+        test.expect(24);
+
+        var monthsShort = {
+            'nominative': 'янв_фев_мар_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
+            'accusative': 'янв_фев_мар_апр_май_июня_июля_авг_сен_окт_ноя_дек'.split('_')
+        }, i;
+        for (i = 0; i < 12; i++) {
+            test.equal(moment([2011, i, 1]).format('D MMM'), '1 ' + monthsShort.accusative[i], '1 ' + monthsShort.accusative[i]);
+            test.equal(moment([2011, i, 1]).format('MMM'), monthsShort.nominative[i], '1 ' + monthsShort.nominative[i]);
+        }
+        test.done();
+    },
+
     "format week" : function (test) {
         test.expect(7);