]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Fix russian locale for calendar next week
authorvsn4ik <vsn4ik@gmail.com>
Fri, 7 Aug 2015 21:33:16 +0000 (00:33 +0300)
committerIskren Chernev <iskren.chernev@gmail.com>
Mon, 9 Nov 2015 04:27:09 +0000 (20:27 -0800)
src/locale/ru.js
src/test/locale/ru.js

index 913d6c48b30b7f31109e9beba09d2b19b9d4def8..fceb406be83018e8ff378826bcc9305ee3764715 100644 (file)
@@ -78,8 +78,27 @@ export default moment.defineLocale('ru', {
         sameDay: '[Сегодня в] LT',
         nextDay: '[Завтра в] LT',
         lastDay: '[Вчера в] LT',
-        nextWeek: function () {
-            return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
+        nextWeek: function (now) {
+            if (now.week() !== this.week()) {
+                switch (this.day()) {
+                case 0:
+                    return '[В следующее] dddd [в] LT';
+                case 1:
+                case 2:
+                case 4:
+                    return '[В следующий] dddd [в] LT';
+                case 3:
+                case 5:
+                case 6:
+                    return '[В следующую] dddd [в] LT';
+                }
+            } else {
+                if (this.day() === 2) {
+                    return '[Во] dddd [в] LT';
+                } else {
+                    return '[В] dddd [в] LT';
+                }
+            }
         },
         lastWeek: function (now) {
             if (now.week() !== this.week()) {
index 70caf845dcc8d92a413828e05be898aa0cc82d8d..775d51469f816a993319bc562fbadade5521327e 100644 (file)
@@ -236,18 +236,50 @@ test('calendar day', function (assert) {
 });
 
 test('calendar next week', function (assert) {
-    var i, m;
-    function makeFormat(d) {
-        return d.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
+    var i, m, now;
+
+    function makeFormatNext(d) {
+        switch (d.day()) {
+        case 0:
+            return '[В следующее] dddd [в] LT';
+        case 1:
+        case 2:
+        case 4:
+            return '[В следующий] dddd [в] LT';
+        case 3:
+        case 5:
+        case 6:
+            return '[В следующую] dddd [в] LT';
+        }
+    }
+
+    function makeFormatThis(d) {
+        if (d.day() === 2) {
+            return '[Во] dddd [в] LT';
+        }
+        else {
+            return '[В] dddd [в] LT';
+        }
     }
 
+    now = moment().startOf('week');
     for (i = 2; i < 7; i++) {
-        m = moment().add({d: i});
-        assert.equal(m.calendar(),       m.format(makeFormat(m)),  'Today + ' + i + ' days current time');
+        m = moment(now).add({d: i});
+        assert.equal(m.calendar(now),       m.format(makeFormatThis(m)),  'Today + ' + i + ' days current time');
         m.hours(0).minutes(0).seconds(0).milliseconds(0);
-        assert.equal(m.calendar(),       m.format(makeFormat(m)),  'Today + ' + i + ' days beginning of day');
+        assert.equal(m.calendar(now),       m.format(makeFormatThis(m)),  'Today + ' + i + ' days beginning of day');
         m.hours(23).minutes(59).seconds(59).milliseconds(999);
-        assert.equal(m.calendar(),       m.format(makeFormat(m)),  'Today + ' + i + ' days end of day');
+        assert.equal(m.calendar(now),       m.format(makeFormatThis(m)),  'Today + ' + i + ' days end of day');
+    }
+
+    now = moment().endOf('week');
+    for (i = 2; i < 7; i++) {
+        m = moment(now).add({d: i});
+        assert.equal(m.calendar(now),       m.format(makeFormatNext(m)),  'Today + ' + i + ' days current time');
+        m.hours(0).minutes(0).seconds(0).milliseconds(0);
+        assert.equal(m.calendar(now),       m.format(makeFormatNext(m)),  'Today + ' + i + ' days beginning of day');
+        m.hours(23).minutes(59).seconds(59).milliseconds(999);
+        assert.equal(m.calendar(now),       m.format(makeFormatNext(m)),  'Today + ' + i + ' days end of day');
     }
 });
 
@@ -270,15 +302,10 @@ test('calendar last week', function (assert) {
     }
 
     function makeFormatThis(d) {
-        switch (d.day()) {
-        case 2:
+        if (d.day() === 2) {
             return '[Во] dddd [в] LT';
-        case 0:
-        case 1:
-        case 3:
-        case 4:
-        case 5:
-        case 6:
+        }
+        else {
             return '[В] dddd [в] LT';
         }
     }