Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(chronos): added th locale spec #3450

Merged
merged 2 commits into from
Jan 12, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@
"rollup": "0.52.1",
"rollup-plugin-commonjs": "8.2.6",
"rollup-plugin-node-resolve": "3.0.0",
"rxjs": "5.4.3",
"rxjs": "5.5.2",
"ts-helpers": "^1.1.1",
"ts-loader": "3.2.0",
"ts-node": "4.0.2",
Expand Down
71 changes: 39 additions & 32 deletions src/bs-moment/i18n/th.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
// tslint:disable:comment-format binary-expression-operand-order max-line-length
// tslint:disable:no-bitwise prefer-template cyclomatic-complexity
// tslint:disable:no-shadowed-variable switch-default prefer-const
// tslint:disable:one-variable-per-declaration newline-before-return

// moment.js locale configuration
// locale : Thai [th]
// author : Watcharapol Sanitwong : https://github.com/tumit
Expand All @@ -8,50 +13,52 @@ export const th: LocaleData = {
abbr: 'th',
months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
monthsParseExact: true,
weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),
weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
weekdaysParseExact: true,
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
LT: 'H:mm',
LTS: 'H:mm:ss',
L: 'DD/MM/YYYY',
LL: 'D MMMM YYYY',
LLL : 'D MMMM YYYY เวลา H:mm',
LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
LLL: 'D MMMM YYYY เวลา H:mm',
LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'
},
meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
isPM(input: string): boolean {
isPM(input) {
return input === 'หลังเที่ยง';
},
meridiem(hour: number, minute: number, isLower:boolean) {
return (hour < 12) ? 'ก่อนเที่ยง' : 'หลังเที่ยง';
},
meridiem(hour, minute, isLower) {
if (hour < 12) {
return 'ก่อนเที่ยง';
} else {
return 'หลังเที่ยง';
}
},
calendar: {
sameDay : '[วันนี้ เวลา] LT',
nextDay : '[พรุ่งนี้ เวลา] LT',
nextWeek : 'dddd[หน้า เวลา] LT',
lastDay : '[เมื่อวานนี้ เวลา] LT',
lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
sameDay: '[วันนี้ เวลา] LT',
nextDay: '[พรุ่งนี้ เวลา] LT',
nextWeek: 'dddd[หน้า เวลา] LT',
lastDay: '[เมื่อวานนี้ เวลา] LT',
lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
sameElse: 'L'
},
relativeTime: {
future : 'อีก %s',
past : '%sที่แล้ว',
s : 'ไม่กี่วินาที',
ss : '%d วินาที',
m : '1 นาที',
mm : '%d นาที',
h : '1 ชั่วโมง',
hh : '%d ชั่วโมง',
d : '1 วัน',
dd : '%d วัน',
M : '1 เดือน',
MM : '%d เดือน',
y : '1 ปี',
yy : '%d ปี'
},
week: {
dow: 0, // Sunday is the first day of the week.
doy: 12 // The week that contains Jan 1st is the first week of the year.
future: 'อีก %s',
past: '%sที่แล้ว',
s: 'ไม่กี่วินาที',
ss: '%d วินาที',
m: '1 นาที',
mm: '%d นาที',
h: '1 ชั่วโมง',
hh: '%d ชั่วโมง',
d: '1 วัน',
dd: '%d วัน',
M: '1 เดือน',
MM: '%d เดือน',
y: '1 ปี',
yy: '%d ปี'
}
};
192 changes: 192 additions & 0 deletions src/bs-moment/test/locale/th.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
// tslint:disable:max-line-length max-file-line-count prefer-const forin prefer-template one-variable-per-declaration newline-before-return
// tslint:disable:binary-expression-operand-order comment-format one-line no-var-keyword object-literal-shorthand
// tslint:disable:variable-name no-shadowed-variable

import { assert } from 'chai';
import { moment } from '../chain';
import { th } from '../../i18n/th';
import { tr } from '../../i18n/tr';

describe('locale: th', () => {
// localeModule('th');
beforeAll(() => {
moment.locale('th', th);
});

afterAll(() => {
moment.locale('en');
});
it('parse', function () {
var _tests = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split('_'),
i;

function equalit(input, mmm, i) {
assert.equal(moment(input, mmm).month(), i, input + ' should be month ' + (i + 1));
}

let tests: string[][] = [];
for (i = 0; i < 12; i++) {
tests[i] = _tests[i].split(' ');
equalit(tests[i][0], 'MMM', i);
equalit(tests[i][1], 'MMM', i);
equalit(tests[i][0], 'MMMM', i);
equalit(tests[i][1], 'MMMM', i);
equalit(tests[i][0].toLocaleLowerCase(), 'MMMM', i);
equalit(tests[i][1].toLocaleLowerCase(), 'MMMM', i);
equalit(tests[i][0].toLocaleUpperCase(), 'MMMM', i);
equalit(tests[i][1].toLocaleUpperCase(), 'MMMM', i);
}
});

it('format', function () {
var a = [
['dddd, Do MMMM YYYY, h:mm:ss a', 'อาทิตย์, 14 กุมภาพันธ์ 2010, 3:25:50 หลังเที่ยง'],
['ddd, h A', 'อาทิตย์, 3 หลังเที่ยง'],
['M Mo MM MMMM MMM', '2 2 02 กุมภาพันธ์ ก.พ.'],
['YYYY YY', '2010 10'],
['D Do DD', '14 14 14'],
['d do dddd ddd dd', '0 0 อาทิตย์ อาทิตย์ อา.'],
['DDD DDDo DDDD', '45 45 045'],
['w wo ww', '8 8 08'],
['h hh', '3 03'],
['H HH', '15 15'],
['m mm', '25 25'],
['s ss', '50 50'],
['a A', 'หลังเที่ยง หลังเที่ยง'],
['[the] DDDo [day of the year]', 'the 45 day of the year'],
['LTS', '15:25:50'],
['L', '14/02/2010'],
['LL', '14 กุมภาพันธ์ 2010'],
['LLL', '14 กุมภาพันธ์ 2010 เวลา 15:25'],
['LLLL', 'วันอาทิตย์ที่ 14 กุมภาพันธ์ 2010 เวลา 15:25'],
['l', '14/2/2010'],
['ll', '14 ก.พ. 2010'],
['lll', '14 ก.พ. 2010 เวลา 15:25'],
['llll', 'วันอาทิตย์ที่ 14 ก.พ. 2010 เวลา 15:25']
],
b = moment(new Date(2010, 1, 14, 15, 25, 50, 125)),
i;
for (i = 0; i < a.length; i++) {
assert.equal(b.format(a[i][0]), a[i][1], a[i][0] + ' ---> ' + a[i][1]);
}
});

it('format month', function () {
var expected = 'มกราคม ม.ค._กุมภาพันธ์ ก.พ._มีนาคม มี.ค._เมษายน เม.ย._พฤษภาคม พ.ค._มิถุนายน มิ.ย._กรกฎาคม ก.ค._สิงหาคม ส.ค._กันยายน ก.ย._ตุลาคม ต.ค._พฤศจิกายน พ.ย._ธันวาคม ธ.ค.'.split('_'),
i;
for (i = 0; i < expected.length; i++) {
assert.equal(moment([2011, i, 1]).format('MMMM MMM'), expected[i], expected[i]);
}
});

it('format week', function () {
var expected = 'อาทิตย์ อาทิตย์ อา._จันทร์ จันทร์ จ._อังคาร อังคาร อ._พุธ พุธ พ._พฤหัสบดี พฤหัส พฤ._ศุกร์ ศุกร์ ศ._เสาร์ เสาร์ ส.'.split('_'),
i;
for (i = 0; i < expected.length; i++) {
assert.equal(moment([2011, 0, 2 + i]).format('dddd ddd dd'), expected[i], expected[i]);
}
});

it('from', function () {
var start = moment([2007, 1, 28]);
assert.equal(start.from(moment([2007, 1, 28]).add({ s: 44 }), true), 'ไม่กี่วินาที', '44 seconds = a few seconds');
assert.equal(start.from(moment([2007, 1, 28]).add({ s: 45 }), true), '1 นาที', '45 seconds = a minute');
assert.equal(start.from(moment([2007, 1, 28]).add({ s: 89 }), true), '1 นาที', '89 seconds = a minute');
assert.equal(start.from(moment([2007, 1, 28]).add({ s: 90 }), true), '2 นาที', '90 seconds = 2 minutes');
assert.equal(start.from(moment([2007, 1, 28]).add({ m: 44 }), true), '44 นาที', '44 minutes = 44 minutes');
assert.equal(start.from(moment([2007, 1, 28]).add({ m: 45 }), true), '1 ชั่วโมง', '45 minutes = an hour');
assert.equal(start.from(moment([2007, 1, 28]).add({ m: 89 }), true), '1 ชั่วโมง', '89 minutes = an hour');
assert.equal(start.from(moment([2007, 1, 28]).add({ m: 90 }), true), '2 ชั่วโมง', '90 minutes = 2 hours');
assert.equal(start.from(moment([2007, 1, 28]).add({ h: 5 }), true), '5 ชั่วโมง', '5 hours = 5 hours');
assert.equal(start.from(moment([2007, 1, 28]).add({ h: 21 }), true), '21 ชั่วโมง', '21 hours = 21 hours');
assert.equal(start.from(moment([2007, 1, 28]).add({ h: 22 }), true), '1 วัน', '22 hours = a day');
assert.equal(start.from(moment([2007, 1, 28]).add({ h: 35 }), true), '1 วัน', '35 hours = a day');
assert.equal(start.from(moment([2007, 1, 28]).add({ h: 36 }), true), '2 วัน', '36 hours = 2 days');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 1 }), true), '1 วัน', '1 day = a day');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 5 }), true), '5 วัน', '5 days = 5 days');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 25 }), true), '25 วัน', '25 days = 25 days');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 26 }), true), '1 เดือน', '26 days = a month');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 30 }), true), '1 เดือน', '30 days = a month');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 43 }), true), '1 เดือน', '43 days = a month');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 46 }), true), '2 เดือน', '46 days = 2 months');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 74 }), true), '2 เดือน', '75 days = 2 months');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 76 }), true), '3 เดือน', '76 days = 3 months');
assert.equal(start.from(moment([2007, 1, 28]).add({ M: 1 }), true), '1 เดือน', '1 month = a month');
assert.equal(start.from(moment([2007, 1, 28]).add({ M: 5 }), true), '5 เดือน', '5 months = 5 months');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 345 }), true), '1 ปี', '345 days = a year');
assert.equal(start.from(moment([2007, 1, 28]).add({ d: 548 }), true), '2 ปี', '548 days = 2 years');
assert.equal(start.from(moment([2007, 1, 28]).add({ y: 1 }), true), '1 ปี', '1 year = a year');
assert.equal(start.from(moment([2007, 1, 28]).add({ y: 5 }), true), '5 ปี', '5 years = 5 years');
});

it('suffix', function () {
assert.equal(moment(30000).from(0), 'อีก ไม่กี่วินาที', 'prefix');
assert.equal(moment(0).from(30000), 'ไม่กี่วินาทีที่แล้ว', 'suffix');
});

it('now from now', function () {
assert.equal(moment().fromNow(), 'ไม่กี่วินาทีที่แล้ว', 'now from now should display as in the past');
});

it('fromNow', function () {
assert.equal(moment().add({ s: 30 }).fromNow(), 'อีก ไม่กี่วินาที', 'in a few seconds');
assert.equal(moment().add({ d: 5 }).fromNow(), 'อีก 5 วัน', 'in 5 days');
});

it('calendar day', function () {
var a = moment().hours(12).minutes(0).seconds(0);

assert.equal(moment(a).calendar(), 'วันนี้ เวลา 12:00', 'today at the same time');
assert.equal(moment(a).add({ m: 25 }).calendar(), 'วันนี้ เวลา 12:25', 'Now plus 25 min');
assert.equal(moment(a).add({ h: 1 }).calendar(), 'วันนี้ เวลา 13:00', 'Now plus 1 hour');
assert.equal(moment(a).add({ d: 1 }).calendar(), 'พรุ่งนี้ เวลา 12:00', 'tomorrow at the same time');
assert.equal(moment(a).subtract({ h: 1 }).calendar(), 'วันนี้ เวลา 11:00', 'Now minus 1 hour');
assert.equal(moment(a).subtract({ d: 1 }).calendar(), 'เมื่อวานนี้ เวลา 12:00', 'yesterday at the same time');
});

it('calendar next week', function () {
var i, m;
for (i = 2; i < 7; i++) {
m = moment().add({ d: i });
assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days current time');
m.hours(0).minutes(0).seconds(0).milliseconds(0);
assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days beginning of day');
m.hours(23).minutes(59).seconds(59).milliseconds(999);
assert.equal(m.calendar(), m.format('dddd[หน้า เวลา] LT'), 'Today + ' + i + ' days end of day');
}
});

it('calendar last week', function () {
var i, m;
for (i = 2; i < 7; i++) {
m = moment().subtract({ d: i });
assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days current time');
m.hours(0).minutes(0).seconds(0).milliseconds(0);
assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days beginning of day');
m.hours(23).minutes(59).seconds(59).milliseconds(999);
assert.equal(m.calendar(), m.format('[วัน]dddd[ที่แล้ว เวลา] LT'), 'Today - ' + i + ' days end of day');
}
});

it('calendar all else', function () {
var weeksAgo = moment().subtract({ w: 1 }),
weeksFromNow = moment().add({ w: 1 });

assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '1 week ago');
assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 1 week');

weeksAgo = moment().subtract({ w: 2 });
weeksFromNow = moment().add({ w: 2 });

assert.equal(weeksAgo.calendar(), weeksAgo.format('L'), '2 weeks ago');
assert.equal(weeksFromNow.calendar(), weeksFromNow.format('L'), 'in 2 weeks');
});

it('weeks year starting sunday format', function () {
assert.equal(moment([2012, 0, 1]).format('w ww wo'), '1 01 1', 'Jan 1 2012 should be week 1');
assert.equal(moment([2012, 0, 7]).format('w ww wo'), '1 01 1', 'Jan 7 2012 should be week 1');
assert.equal(moment([2012, 0, 8]).format('w ww wo'), '2 02 2', 'Jan 8 2012 should be week 2');
assert.equal(moment([2012, 0, 14]).format('w ww wo'), '2 02 2', 'Jan 14 2012 should be week 2');
assert.equal(moment([2012, 0, 15]).format('w ww wo'), '3 03 3', 'Jan 15 2012 should be week 3');
});
});