0
0
mirror of https://github.com/Doodle3D/Doodle3D-API synced 2024-06-30 06:51:21 +02:00
Doodle3D-API/jspm_packages/npm/core-js@0.9.18/modules/core.date.js

89 lines
2.6 KiB
JavaScript
Raw Normal View History

2015-07-15 15:06:18 +02:00
/* */
var $ = require("./$"),
$def = require("./$.def"),
core = $.core,
formatRegExp = /\b\w\w?\b/g,
flexioRegExp = /:(.*)\|(.*)$/,
locales = {},
current = 'en',
SECONDS = 'Seconds',
MINUTES = 'Minutes',
HOURS = 'Hours',
DATE = 'Date',
MONTH = 'Month',
YEAR = 'FullYear';
function lz(num) {
return num > 9 ? num : '0' + num;
}
function createFormat(prefix) {
return function(template, locale) {
var that = this,
dict = locales[$.has(locales, locale) ? locale : current];
function get(unit) {
return that[prefix + unit]();
}
return String(template).replace(formatRegExp, function(part) {
switch (part) {
case 's':
return get(SECONDS);
case 'ss':
return lz(get(SECONDS));
case 'm':
return get(MINUTES);
case 'mm':
return lz(get(MINUTES));
case 'h':
return get(HOURS);
case 'hh':
return lz(get(HOURS));
case 'D':
return get(DATE);
case 'DD':
return lz(get(DATE));
case 'W':
return dict[0][get('Day')];
case 'N':
return get(MONTH) + 1;
case 'NN':
return lz(get(MONTH) + 1);
case 'M':
return dict[2][get(MONTH)];
case 'MM':
return dict[1][get(MONTH)];
case 'Y':
return get(YEAR);
case 'YY':
return lz(get(YEAR) % 100);
}
return part;
});
};
}
function addLocale(lang, locale) {
function split(index) {
var result = [];
$.each.call(locale.months.split(','), function(it) {
result.push(it.replace(flexioRegExp, '$' + index));
});
return result;
}
locales[lang] = [locale.weekdays.split(','), split(1), split(2)];
return core;
}
$def($def.P + $def.F, DATE, {
format: createFormat('get'),
formatUTC: createFormat('getUTC')
});
addLocale(current, {
weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday',
months: 'January,February,March,April,May,June,July,August,September,October,November,December'
});
addLocale('ru', {
weekdays: 'Воскресенье,Понедельник,Вторник,Среда,Четверг,Пятница,Суббота',
months: 'Январ:я|ь,Феврал:я|ь,Март:а|,Апрел:я|ь,Ма:я|й,Июн:я|ь,' + 'Июл:я|ь,Август:а|,Сентябр:я|ь,Октябр:я|ь,Ноябр:я|ь,Декабр:я|ь'
});
core.locale = function(locale) {
return $.has(locales, locale) ? current = locale : current;
};
core.addLocale = addLocale;