Cleaning up function definitions in Language.php
[mediawiki.git] / resources / moment / lang / lb.js
blob946ba13c2fb796ed95ee53b708d45d32c0056ffc
1 // moment.js language configuration
2 // language : Luxembourgish (lb)
3 // author : mweimerskirch : https://github.com/mweimerskirch
5 // Note: Luxembourgish has a very particular phonological rule ("Eifeler Regel") that causes the
6 // deletion of the final "n" in certain contexts. That's what the "eifelerRegelAppliesToWeekday"
7 // and "eifelerRegelAppliesToNumber" methods are meant for
9 (function (factory) {
10     if (typeof define === 'function' && define.amd) {
11         define(['moment'], factory); // AMD
12     } else if (typeof exports === 'object') {
13         module.exports = factory(require('../moment')); // Node
14     } else {
15         factory(window.moment); // Browser global
16     }
17 }(function (moment) {
18     function processRelativeTime(number, withoutSuffix, key, isFuture) {
19         var format = {
20             'm': ['eng Minutt', 'enger Minutt'],
21             'h': ['eng Stonn', 'enger Stonn'],
22             'd': ['een Dag', 'engem Dag'],
23             'dd': [number + ' Deeg', number + ' Deeg'],
24             'M': ['ee Mount', 'engem Mount'],
25             'MM': [number + ' Méint', number + ' Méint'],
26             'y': ['ee Joer', 'engem Joer'],
27             'yy': [number + ' Joer', number + ' Joer']
28         };
29         return withoutSuffix ? format[key][0] : format[key][1];
30     }
32     function processFutureTime(string) {
33         var number = string.substr(0, string.indexOf(' '));
34         if (eifelerRegelAppliesToNumber(number)) {
35             return "a " + string;
36         }
37         return "an " + string;
38     }
40     function processPastTime(string) {
41         var number = string.substr(0, string.indexOf(' '));
42         if (eifelerRegelAppliesToNumber(number)) {
43             return "viru " + string;
44         }
45         return "virun " + string;
46     }
48     function processLastWeek(string1) {
49         var weekday = this.format('d');
50         if (eifelerRegelAppliesToWeekday(weekday)) {
51             return '[Leschte] dddd [um] LT';
52         }
53         return '[Leschten] dddd [um] LT';
54     }
56     /**
57      * Returns true if the word before the given week day loses the "-n" ending.
58      * e.g. "Leschten Dënschdeg" but "Leschte Méindeg"
59      *
60      * @param weekday {integer}
61      * @returns {boolean}
62      */
63     function eifelerRegelAppliesToWeekday(weekday) {
64         weekday = parseInt(weekday, 10);
65         switch (weekday) {
66         case 0: // Sonndeg
67         case 1: // Méindeg
68         case 3: // Mëttwoch
69         case 5: // Freideg
70         case 6: // Samschdeg
71             return true;
72         default: // 2 Dënschdeg, 4 Donneschdeg
73             return false;
74         }
75     }
77     /**
78      * Returns true if the word before the given number loses the "-n" ending.
79      * e.g. "an 10 Deeg" but "a 5 Deeg"
80      *
81      * @param number {integer}
82      * @returns {boolean}
83      */
84     function eifelerRegelAppliesToNumber(number) {
85         number = parseInt(number, 10);
86         if (isNaN(number)) {
87             return false;
88         }
89         if (number < 0) {
90             // Negative Number --> always true
91             return true;
92         } else if (number < 10) {
93             // Only 1 digit
94             if (4 <= number && number <= 7) {
95                 return true;
96             }
97             return false;
98         } else if (number < 100) {
99             // 2 digits
100             var lastDigit = number % 10, firstDigit = number / 10;
101             if (lastDigit === 0) {
102                 return eifelerRegelAppliesToNumber(firstDigit);
103             }
104             return eifelerRegelAppliesToNumber(lastDigit);
105         } else if (number < 10000) {
106             // 3 or 4 digits --> recursively check first digit
107             while (number >= 10) {
108                 number = number / 10;
109             }
110             return eifelerRegelAppliesToNumber(number);
111         } else {
112             // Anything larger than 4 digits: recursively check first n-3 digits
113             number = number / 1000;
114             return eifelerRegelAppliesToNumber(number);
115         }
116     }
118     return moment.lang('lb', {
119         months: "Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),
120         monthsShort: "Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),
121         weekdays: "Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),
122         weekdaysShort: "So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),
123         weekdaysMin: "So_Mé_Dë_Më_Do_Fr_Sa".split("_"),
124         longDateFormat: {
125             LT: "H:mm [Auer]",
126             L: "DD.MM.YYYY",
127             LL: "D. MMMM YYYY",
128             LLL: "D. MMMM YYYY LT",
129             LLLL: "dddd, D. MMMM YYYY LT"
130         },
131         calendar: {
132             sameDay: "[Haut um] LT",
133             sameElse: "L",
134             nextDay: '[Muer um] LT',
135             nextWeek: 'dddd [um] LT',
136             lastDay: '[Gëschter um] LT',
137             lastWeek: processLastWeek
138         },
139         relativeTime: {
140             future: processFutureTime,
141             past: processPastTime,
142             s: "e puer Sekonnen",
143             m: processRelativeTime,
144             mm: "%d Minutten",
145             h: processRelativeTime,
146             hh: "%d Stonnen",
147             d: processRelativeTime,
148             dd: processRelativeTime,
149             M: processRelativeTime,
150             MM: processRelativeTime,
151             y: processRelativeTime,
152             yy: processRelativeTime
153         },
154         ordinal: '%d.',
155         week: {
156             dow: 1, // Monday is the first day of the week.
157             doy: 4  // The week that contains Jan 4th is the first week of the year.
158         }
159     });
160 }));