1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- var buildFormattingTokensRegExp = require('../../_lib/build_formatting_tokens_reg_exp/index.js')
- function buildFormatLocale () {
- // http://new.gramota.ru/spravka/buro/search-answer?s=242637
- var monthsShort = ['янв.', 'фев.', 'март', 'апр.', 'май', 'июнь', 'июль', 'авг.', 'сент.', 'окт.', 'нояб.', 'дек.']
- var monthsFull = ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь']
- var monthsGenitive = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']
- var weekdays2char = ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']
- var weekdays3char = ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'суб']
- var weekdaysFull = ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота']
- var meridiem = ['ночи', 'утра', 'дня', 'вечера']
- var formatters = {
- // Month: янв., фев., ..., дек.
- 'MMM': function (date) {
- return monthsShort[date.getMonth()]
- },
- // Month: январь, февраль, ..., декабрь
- 'MMMM': function (date) {
- return monthsFull[date.getMonth()]
- },
- // Day of week: вс, пн, ..., сб
- 'dd': function (date) {
- return weekdays2char[date.getDay()]
- },
- // Day of week: вск, пнд, ..., суб
- 'ddd': function (date) {
- return weekdays3char[date.getDay()]
- },
- // Day of week: воскресенье, понедельник, ..., суббота
- 'dddd': function (date) {
- return weekdaysFull[date.getDay()]
- },
- // Time of day: ночи, утра, дня, вечера
- 'A': function (date) {
- var hours = date.getHours()
- if (hours >= 17) {
- return meridiem[3]
- } else if (hours >= 12) {
- return meridiem[2]
- } else if (hours >= 4) {
- return meridiem[1]
- } else {
- return meridiem[0]
- }
- },
- 'Do': function (date, formatters) {
- return formatters.D(date) + '-е'
- },
- 'Wo': function (date, formatters) {
- return formatters.W(date) + '-я'
- }
- }
- formatters.a = formatters.A
- formatters.aa = formatters.A
- // Generate ordinal version of formatters: M -> Mo, DDD -> DDDo, etc.
- var ordinalFormatters = ['M', 'DDD', 'd', 'Q']
- ordinalFormatters.forEach(function (formatterToken) {
- formatters[formatterToken + 'o'] = function (date, formatters) {
- return formatters[formatterToken](date) + '-й'
- }
- })
- // Generate formatters like 'D MMMM',
- // where month is in the genitive case: января, февраля, ..., декабря
- var monthsGenitiveFormatters = ['D', 'Do', 'DD']
- monthsGenitiveFormatters.forEach(function (formatterToken) {
- formatters[formatterToken + ' MMMM'] = function (date, commonFormatters) {
- var formatter = formatters[formatterToken] || commonFormatters[formatterToken]
- return formatter(date, commonFormatters) + ' ' + monthsGenitive[date.getMonth()]
- }
- })
- return {
- formatters: formatters,
- formattingTokensRegExp: buildFormattingTokensRegExp(formatters)
- }
- }
- module.exports = buildFormatLocale
|