0
0
mirror of https://github.com/Doodle3D/Doodle3D-API synced 2024-06-27 14:11:21 +02:00
Doodle3D-API/jspm_packages/npm/core-js@0.9.18/modules/core.date.js
2015-07-15 15:06:18 +02:00

89 lines
2.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* */
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;