UNPKG

sugar

Version:

A Javascript utility library for working with native objects.

328 lines (324 loc) 6.92 kB
'use strict'; var TIMEZONE_ABBREVIATION_REG = require('./TIMEZONE_ABBREVIATION_REG'), LocaleHelpers = require('./LocaleHelpers'), DateUnitIndexes = require('./DateUnitIndexes'), trunc = require('../../common/var/trunc'), getDate = require('../internal/getDate'), getYear = require('../internal/getYear'), getHours = require('../internal/getHours'), getMonth = require('../internal/getMonth'), cloneDate = require('../internal/cloneDate'), padNumber = require('../../common/internal/padNumber'), getWeekday = require('../internal/getWeekday'), callDateGet = require('../../common/internal/callDateGet'), mathAliases = require('../../common/var/mathAliases'), getWeekYear = require('../internal/getWeekYear'), getUTCOffset = require('../internal/getUTCOffset'), getDaysSince = require('../internal/getDaysSince'), getWeekNumber = require('../internal/getWeekNumber'), getMeridiemToken = require('../internal/getMeridiemToken'), setUnitAndLowerToEdge = require('../internal/setUnitAndLowerToEdge'); var localeManager = LocaleHelpers.localeManager, MONTH_INDEX = DateUnitIndexes.MONTH_INDEX, ceil = mathAliases.ceil; var FormatTokensBase = [ { ldml: 'Dow', strf: 'a', lowerToken: 'dow', get: function(d, localeCode) { return localeManager.get(localeCode).getWeekdayName(getWeekday(d), 2); } }, { ldml: 'Weekday', strf: 'A', lowerToken: 'weekday', allowAlternates: true, get: function(d, localeCode, alternate) { return localeManager.get(localeCode).getWeekdayName(getWeekday(d), alternate); } }, { ldml: 'Mon', strf: 'b h', lowerToken: 'mon', get: function(d, localeCode) { return localeManager.get(localeCode).getMonthName(getMonth(d), 2); } }, { ldml: 'Month', strf: 'B', lowerToken: 'month', allowAlternates: true, get: function(d, localeCode, alternate) { return localeManager.get(localeCode).getMonthName(getMonth(d), alternate); } }, { strf: 'C', get: function(d) { return getYear(d).toString().slice(0, 2); } }, { ldml: 'd date day', strf: 'd', strfPadding: 2, ldmlPaddedToken: 'dd', ordinalToken: 'do', get: function(d) { return getDate(d); } }, { strf: 'e', get: function(d) { return padNumber(getDate(d), 2, false, 10, ' '); } }, { ldml: 'H 24hr', strf: 'H', strfPadding: 2, ldmlPaddedToken: 'HH', get: function(d) { return getHours(d); } }, { ldml: 'h hours 12hr', strf: 'I', strfPadding: 2, ldmlPaddedToken: 'hh', get: function(d) { return getHours(d) % 12 || 12; } }, { ldml: 'D', strf: 'j', strfPadding: 3, ldmlPaddedToken: 'DDD', get: function(d) { var s = setUnitAndLowerToEdge(cloneDate(d), MONTH_INDEX); return getDaysSince(d, s) + 1; } }, { ldml: 'M', strf: 'm', strfPadding: 2, ordinalToken: 'Mo', ldmlPaddedToken: 'MM', get: function(d) { return getMonth(d) + 1; } }, { ldml: 'm minutes', strf: 'M', strfPadding: 2, ldmlPaddedToken: 'mm', get: function(d) { return callDateGet(d, 'Minutes'); } }, { ldml: 'Q', get: function(d) { return ceil((getMonth(d) + 1) / 3); } }, { ldml: 'TT', strf: 'p', get: function(d, localeCode) { return getMeridiemToken(d, localeCode); } }, { ldml: 'tt', strf: 'P', get: function(d, localeCode) { return getMeridiemToken(d, localeCode).toLowerCase(); } }, { ldml: 'T', lowerToken: 't', get: function(d, localeCode) { return getMeridiemToken(d, localeCode).charAt(0); } }, { ldml: 's seconds', strf: 'S', strfPadding: 2, ldmlPaddedToken: 'ss', get: function(d) { return callDateGet(d, 'Seconds'); } }, { ldml: 'S ms', strfPadding: 3, ldmlPaddedToken: 'SSS', get: function(d) { return callDateGet(d, 'Milliseconds'); } }, { ldml: 'e', strf: 'u', ordinalToken: 'eo', get: function(d) { return getWeekday(d) || 7; } }, { strf: 'U', strfPadding: 2, get: function(d) { // Sunday first, 0-53 return getWeekNumber(d, false, 0); } }, { ldml: 'W', strf: 'V', strfPadding: 2, ordinalToken: 'Wo', ldmlPaddedToken: 'WW', get: function(d) { // Monday first, 1-53 (ISO8601) return getWeekNumber(d, true); } }, { strf: 'w', get: function(d) { return getWeekday(d); } }, { ldml: 'w', ordinalToken: 'wo', ldmlPaddedToken: 'ww', get: function(d, localeCode) { // Locale dependent, 1-53 var loc = localeManager.get(localeCode), dow = loc.getFirstDayOfWeek(localeCode), doy = loc.getFirstDayOfWeekYear(localeCode); return getWeekNumber(d, true, dow, doy); } }, { strf: 'W', strfPadding: 2, get: function(d) { // Monday first, 0-53 return getWeekNumber(d, false); } }, { ldmlPaddedToken: 'gggg', ldmlTwoDigitToken: 'gg', get: function(d, localeCode) { return getWeekYear(d, localeCode); } }, { strf: 'G', strfPadding: 4, strfTwoDigitToken: 'g', ldmlPaddedToken: 'GGGG', ldmlTwoDigitToken: 'GG', get: function(d, localeCode) { return getWeekYear(d, localeCode, true); } }, { ldml: 'year', ldmlPaddedToken: 'yyyy', ldmlTwoDigitToken: 'yy', strf: 'Y', strfPadding: 4, strfTwoDigitToken: 'y', get: function(d) { return getYear(d); } }, { ldml: 'ZZ', strf: 'z', get: function(d) { return getUTCOffset(d); } }, { ldml: 'X', get: function(d) { return trunc(d.getTime() / 1000); } }, { ldml: 'x', get: function(d) { return d.getTime(); } }, { ldml: 'Z', get: function(d) { return getUTCOffset(d, true); } }, { ldml: 'z', strf: 'Z', get: function(d) { // Note that this is not accurate in all browsing environments! // https://github.com/moment/moment/issues/162 // It will continue to be supported for Node and usage with the // understanding that it may be blank. var match = d.toString().match(TIMEZONE_ABBREVIATION_REG); // istanbul ignore next return match ? match[1] : ''; } }, { strf: 'D', alias: '%m/%d/%y' }, { strf: 'F', alias: '%Y-%m-%d' }, { strf: 'r', alias: '%I:%M:%S %p' }, { strf: 'R', alias: '%H:%M' }, { strf: 'T', alias: '%H:%M:%S' }, { strf: 'x', alias: '{short}' }, { strf: 'X', alias: '{time}' }, { strf: 'c', alias: '{stamp}' } ]; module.exports = FormatTokensBase;