From: Vadim Borodean Date: Mon, 22 Jul 2013 00:37:41 +0000 (+0300) Subject: Cases month abbreviations X-Git-Tag: 2.2.0~6^2~2^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08244d80f76d3c2e718c206849cd0f0247ee2bc7;p=thirdparty%2Fmoment.git Cases month abbreviations Futher reading (in Russian): http://artgorbunov.ru/bb/soviet/20100812/ --- diff --git a/lang/ru.js b/lang/ru.js index 069f6759d..dfc238df3 100644 --- a/lang/ru.js +++ b/lang/ru.js @@ -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("_"), diff --git a/test/lang/ru.js b/test/lang/ru.js index b189b7b60..dfed0cdba 100644 --- a/test/lang/ru.js +++ b/test/lang/ru.js @@ -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);