Skip to content

Commit

Permalink
"Prettiered"
Browse files Browse the repository at this point in the history
  • Loading branch information
mergehez authored and ichernev committed Dec 24, 2023
1 parent 29e6ac2 commit bf179c3
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 53 deletions.
66 changes: 32 additions & 34 deletions src/locale/ku-kmr.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
//! locale : Northern Kurdish [ku-kmr]
//! authors : Mazlum Özdogan : https://github.com/mergehez

// All rules except for month names are according to
// All rules except for month names are according to
// the spelling rules which are defined in the book 'Rêbera Rastnivîsînê' from Komxebata Kurmancîyê.
// Komxebata Kurmancîyê is a work group that studied different uses in Kurdish language (Kurmanji/Northern Kurdish),
// Komxebata Kurmancîyê is a work group that studied different uses in Kurdish language (Kurmanji/Northern Kurdish),
// chose one of alternatives as standard and publish them via their book.
// There are 18 Kurdish linguists in the group.
// The group was formed by Mesopotamia Foundation
Expand All @@ -13,20 +13,20 @@ import moment from '../moment';

function processRelativeTime(num, withoutSuffix, key, isFuture) {
var format = {
s: ['çend sanîye', 'çend sanîyeyan', 'çend sanîyeyên'],
ss: [num + ' sanîye', num + ' sanîyeyan', 'di ' + num + ' sanîyeyan de'],
m: ['deqîqeyek', 'deqîqeyekê', 'deqîqeyeke'],
mm: [num + ' deqîqe', num + ' deqîqeyan', 'di ' + num + ' deqîqeyan de'],
h: ['saetek', 'saetekê', 'saeteke'],
hh: [num + ' saet', num + ' saetan', 'di ' + num + ' saetan de'],
d: ['rojek', 'rojekê', 'rojeke'],
dd: [num + ' roj', num + ' rojan', 'di ' + num + ' rojan de'],
w: ['hefteyek', 'hefteyekê', 'hefteyeke'],
ww: [num + ' hefte', num + ' hefteyan', 'di ' + num + ' hefteyan de'],
M: ['mehek', 'mehekê', 'meheke'],
MM: [num + ' meh', num + ' mehan', 'di ' + num + ' mehan de'],
y: ['salek', 'salekê', 'saleke'],
yy: [num + ' sal', num + ' salan', 'di ' + num + ' salan de'],
s: ['çend sanîye', 'çend sanîyeyan'],
ss: [num + ' sanîye', num + ' sanîyeyan'],
m: ['deqîqeyek', 'deqîqeyekê'],
mm: [num + ' deqîqe', num + ' deqîqeyan'],
h: ['saetek', 'saetekê'],
hh: [num + ' saet', num + ' saetan'],
d: ['rojek', 'rojekê'],
dd: [num + ' roj', num + ' rojan'],
w: ['hefteyek', 'hefteyekê'],
ww: [num + ' hefte', num + ' hefteyan'],
M: ['mehek', 'mehekê'],
MM: [num + ' meh', num + ' mehan'],
y: ['salek', 'salekê'],
yy: [num + ' sal', num + ' salan'],
};
return withoutSuffix ? format[key][0] : format[key][1];
}
Expand All @@ -35,32 +35,31 @@ function processRelativeTime(num, withoutSuffix, key, isFuture) {
// num = parseInt(num.split(':')[0]);
// else
// num = parseInt(num);
// return num == 0 || num % 10 == 1 ? 'ê'
// : (num > 10 && num % 10 == 0 ? 'î' : 'an');
// return num == 0 || num % 10 == 1 ? 'ê'
// : (num > 10 && num % 10 == 0 ? 'î' : 'an');
// }
function ezafeNumSuffix(num) {
num = '' + num;
var l = num.substring(num.length - 1),
ll = num.length > 1 ? num.substring(num.length - 2) : '';
if (!(ll == 12 || ll == 13) && (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80'))
if (
!(ll == 12 || ll == 13) &&
(l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
)
return 'yê';
return 'ê';
}

export default moment.defineLocale('ku-kmr', {
// According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
// According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
// this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
// But the names below are more well known and handy
months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
'_'
),
monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split(
'_'
),
monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
monthsParseExact: true,
weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split(
'_'
),
weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
meridiem: function (hours, minutes, isLower) {
Expand All @@ -83,11 +82,11 @@ export default moment.defineLocale('ku-kmr', {
llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
},
calendar: {
sameDay: function (h) { return '[Îro di saet] LT [de]'; },
nextDay: function (h) { return '[Sibê di saet] LT [de]'; },
nextWeek: function (h) { return 'dddd [di saet] LT [de]'; },
lastDay: function () { return '[Duh di saet] LT [de]'; },
lastWeek: function () { return 'dddd[a borî di saet] LT [de]'; },
sameDay: '[Îro di saet] LT [de]',
nextDay: '[Sibê di saet] LT [de]',
nextWeek: 'dddd [di saet] LT [de]',
lastDay: '[Duh di saet] LT [de]',
lastWeek: 'dddd[a borî di saet] LT [de]',
sameElse: 'L',
},
relativeTime: {
Expand All @@ -106,13 +105,12 @@ export default moment.defineLocale('ku-kmr', {
M: processRelativeTime,
MM: processRelativeTime,
y: processRelativeTime,
yy: processRelativeTime
yy: processRelativeTime,
},
dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
ordinal: (num, period) => {
let p = period.toLowerCase();
if (p.includes('w') || p.includes('m'))
return num + '.';
if (p.includes('w') || p.includes('m')) return num + '.';

return num + ezafeNumSuffix(num);
},
Expand Down
45 changes: 26 additions & 19 deletions src/test/locale/ku-kmr.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ localeModule('ku-kmr');

test('parse', function (assert) {
var i,
tests = 'Rêbendan Rêb_Sibat Sib_Adar Ada_Nîsan Nîs_Gulan Gul_Hezîran Hez_Tîrmeh Tîr_Tebax Teb_Îlon Îlo_Cotmeh Cot_Mijdar Mij_Berfanbar Ber'.split(
'_'
);
tests =
'Rêbendan Rêb_Sibat Sib_Adar Ada_Nîsan Nîs_Gulan Gul_Hezîran Hez_Tîrmeh Tîr_Tebax Teb_Îlon Îlo_Cotmeh Cot_Mijdar Mij_Berfanbar Ber'.split(
'_'
);

function equalTest(input, mmm, i) {
assert.equal(
Expand Down Expand Up @@ -195,9 +196,10 @@ test('format ordinal', function (assert) {

test('format month', function (assert) {
var i,
expected = 'Rêbendan Rêb_Sibat Sib_Adar Ada_Nîsan Nîs_Gulan Gul_Hezîran Hez_Tîrmeh Tîr_Tebax Teb_Îlon Îlo_Cotmeh Cot_Mijdar Mij_Berfanbar Ber'.split(
'_'
);
expected =
'Rêbendan Rêb_Sibat Sib_Adar Ada_Nîsan Nîs_Gulan Gul_Hezîran Hez_Tîrmeh Tîr_Tebax Teb_Îlon Îlo_Cotmeh Cot_Mijdar Mij_Berfanbar Ber'.split(
'_'
);

for (i = 0; i < expected.length; i++) {
assert.equal(
Expand All @@ -210,9 +212,10 @@ test('format month', function (assert) {

test('format week', function (assert) {
var i,
expected = 'Yekşem Yek Ye_Duşem Du Du_Sêşem Sê Sê_Çarşem Çar Ça_Pêncşem Pên Pê_În În În_Şemî Şem Şe'.split(
'_'
);
expected =
'Yekşem Yek Ye_Duşem Du Du_Sêşem Sê Sê_Çarşem Çar Ça_Pêncşem Pên Pê_În În În_Şemî Şem Şe'.split(
'_'
);

for (i = 0; i < expected.length; i++) {
assert.equal(
Expand Down Expand Up @@ -387,7 +390,11 @@ test('fromNow', function (assert) {
'di çend sanîyeyan de',
'in a few seconds'
);
assert.equal(moment().add({ d: 5 }).fromNow(), 'di 5 rojan de', 'in 5 days');
assert.equal(
moment().add({ d: 5 }).fromNow(),
'di 5 rojan de',
'in 5 days'
);
});

test('calendar day', function (assert) {
Expand Down Expand Up @@ -527,37 +534,37 @@ test('weeks year starting sunday formatted', function (assert) {

test('weekdays strict parsing', function (assert) {
var m = moment('2015-01-01T12', moment.ISO_8601, true),
kuKmrLocale = moment.localeData('ku-kmr'),
locale = moment.localeData('ku-kmr'),
i;

for (i = 0; i < 7; ++i) {
assert.equal(
moment(kuKmrLocale.weekdays(m.day(i), ''), 'dddd', true).isValid(),
moment(locale.weekdays(m.day(i), ''), 'dddd', true).isValid(),
true,
'parse weekday ' + i + ', val from moment: ' + m.day(i) + " => " + moment(kuKmrLocale.weekdays(m.day(i), ''), 'dddd', true)
'parse weekday ' + i
);
assert.equal(
moment(kuKmrLocale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(),
moment(locale.weekdaysShort(m.day(i), ''), 'ddd', true).isValid(),
true,
'parse short weekday ' + i + ', val from moment: ' + m.day(i) + " => " + moment(kuKmrLocale.weekdaysShort(m.day(i), ''), 'ddd', true)
'parse short weekday ' + i
);
assert.equal(
moment(kuKmrLocale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(),
moment(locale.weekdaysMin(m.day(i), ''), 'dd', true).isValid(),
true,
'parse min weekday ' + i + ', val from moment: ' + m.day(i) + " => " + moment(kuKmrLocale.weekdaysMin(m.day(i), ''), 'dd', true)
'parse min weekday ' + i
);

// negative tests
// short and min are always equal for index 1,2 and 5
// assert.equal(
// moment(kuKmrLocale.weekdaysMin(m.day(i), ''), 'ddd', true).isValid(),
// false,
// 'negative parse short weekday ' + i + ', val from moment: ' + m.day(i) + " => " + moment(kuKmrLocale.weekdaysMin(m.day(i), ''), 'ddd', true)
// 'negative parse short weekday ' + i
// );
// assert.equal(
// moment(kuKmrLocale.weekdaysShort(m.day(i), ''), 'dd', true).isValid(),
// false,
// 'negative parse min weekday ' + i + ', val from moment: ' + m.day(i) + " => " + moment(kuKmrLocale.weekdaysShort(m.day(i), ''), 'dd', true)
// 'negative parse min weekday ' + i
// );
}
});

0 comments on commit bf179c3

Please sign in to comment.