168 lines
15 KiB
JavaScript
168 lines
15 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const underscore_1 = require("./underscore");
|
|
const rFormat = /%([-_0^#:]+)?(\d+)?([EO])?(.)/;
|
|
const monthNames = [
|
|
'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August',
|
|
'September', 'October', 'November', 'December'
|
|
];
|
|
const dayNames = [
|
|
'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'
|
|
];
|
|
const monthNamesShort = monthNames.map(abbr);
|
|
const dayNamesShort = dayNames.map(abbr);
|
|
const suffixes = {
|
|
1: 'st',
|
|
2: 'nd',
|
|
3: 'rd',
|
|
'default': 'th'
|
|
};
|
|
function abbr(str) {
|
|
return str.slice(0, 3);
|
|
}
|
|
// prototype extensions
|
|
function daysInMonth(d) {
|
|
const feb = isLeapYear(d) ? 29 : 28;
|
|
return [31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
}
|
|
function getDayOfYear(d) {
|
|
let num = 0;
|
|
for (let i = 0; i < d.getMonth(); ++i) {
|
|
num += daysInMonth(d)[i];
|
|
}
|
|
return num + d.getDate();
|
|
}
|
|
function getWeekOfYear(d, startDay) {
|
|
// Skip to startDay of this week
|
|
const now = getDayOfYear(d) + (startDay - d.getDay());
|
|
// Find the first startDay of the year
|
|
const jan1 = new Date(d.getFullYear(), 0, 1);
|
|
const then = (7 - jan1.getDay() + startDay);
|
|
return String(Math.floor((now - then) / 7) + 1);
|
|
}
|
|
function isLeapYear(d) {
|
|
const year = d.getFullYear();
|
|
return !!((year & 3) === 0 && (year % 100 || (year % 400 === 0 && year)));
|
|
}
|
|
function getSuffix(d) {
|
|
const str = d.getDate().toString();
|
|
const index = parseInt(str.slice(-1));
|
|
return suffixes[index] || suffixes['default'];
|
|
}
|
|
function century(d) {
|
|
return parseInt(d.getFullYear().toString().substring(0, 2), 10);
|
|
}
|
|
// default to 0
|
|
const padWidths = {
|
|
d: 2,
|
|
e: 2,
|
|
H: 2,
|
|
I: 2,
|
|
j: 3,
|
|
k: 2,
|
|
l: 2,
|
|
L: 3,
|
|
m: 2,
|
|
M: 2,
|
|
S: 2,
|
|
U: 2,
|
|
W: 2
|
|
};
|
|
// default to '0'
|
|
const padChars = {
|
|
a: ' ',
|
|
A: ' ',
|
|
b: ' ',
|
|
B: ' ',
|
|
c: ' ',
|
|
e: ' ',
|
|
k: ' ',
|
|
l: ' ',
|
|
p: ' ',
|
|
P: ' '
|
|
};
|
|
const formatCodes = {
|
|
a: (d) => dayNamesShort[d.getDay()],
|
|
A: (d) => dayNames[d.getDay()],
|
|
b: (d) => monthNamesShort[d.getMonth()],
|
|
B: (d) => monthNames[d.getMonth()],
|
|
c: (d) => d.toLocaleString(),
|
|
C: (d) => century(d),
|
|
d: (d) => d.getDate(),
|
|
e: (d) => d.getDate(),
|
|
H: (d) => d.getHours(),
|
|
I: (d) => String(d.getHours() % 12 || 12),
|
|
j: (d) => getDayOfYear(d),
|
|
k: (d) => d.getHours(),
|
|
l: (d) => String(d.getHours() % 12 || 12),
|
|
L: (d) => d.getMilliseconds(),
|
|
m: (d) => d.getMonth() + 1,
|
|
M: (d) => d.getMinutes(),
|
|
N: (d, opts) => {
|
|
const width = Number(opts.width) || 9;
|
|
const str = String(d.getMilliseconds()).substr(0, width);
|
|
return (0, underscore_1.padEnd)(str, width, '0');
|
|
},
|
|
p: (d) => (d.getHours() < 12 ? 'AM' : 'PM'),
|
|
P: (d) => (d.getHours() < 12 ? 'am' : 'pm'),
|
|
q: (d) => getSuffix(d),
|
|
s: (d) => Math.round(d.getTime() / 1000),
|
|
S: (d) => d.getSeconds(),
|
|
u: (d) => d.getDay() || 7,
|
|
U: (d) => getWeekOfYear(d, 0),
|
|
w: (d) => d.getDay(),
|
|
W: (d) => getWeekOfYear(d, 1),
|
|
x: (d) => d.toLocaleDateString(),
|
|
X: (d) => d.toLocaleTimeString(),
|
|
y: (d) => d.getFullYear().toString().substring(2, 4),
|
|
Y: (d) => d.getFullYear(),
|
|
z: (d, opts) => {
|
|
const nOffset = Math.abs(d.getTimezoneOffset());
|
|
const h = Math.floor(nOffset / 60);
|
|
const m = nOffset % 60;
|
|
return (d.getTimezoneOffset() > 0 ? '-' : '+') +
|
|
(0, underscore_1.padStart)(h, 2, '0') +
|
|
(opts.flags[':'] ? ':' : '') +
|
|
(0, underscore_1.padStart)(m, 2, '0');
|
|
},
|
|
't': () => '\t',
|
|
'n': () => '\n',
|
|
'%': () => '%'
|
|
};
|
|
formatCodes.h = formatCodes.b;
|
|
function default_1(d, formatStr) {
|
|
let output = '';
|
|
let remaining = formatStr;
|
|
let match;
|
|
while ((match = rFormat.exec(remaining))) {
|
|
output += remaining.slice(0, match.index);
|
|
remaining = remaining.slice(match.index + match[0].length);
|
|
output += format(d, match);
|
|
}
|
|
return output + remaining;
|
|
}
|
|
exports.default = default_1;
|
|
function format(d, match) {
|
|
const [input, flagStr = '', width, modifier, conversion] = match;
|
|
const convert = formatCodes[conversion];
|
|
if (!convert)
|
|
return input;
|
|
const flags = {};
|
|
for (const flag of flagStr)
|
|
flags[flag] = true;
|
|
let ret = String(convert(d, { flags, width, modifier }));
|
|
let padChar = padChars[conversion] || '0';
|
|
let padWidth = width || padWidths[conversion] || 0;
|
|
if (flags['^'])
|
|
ret = ret.toUpperCase();
|
|
else if (flags['#'])
|
|
ret = (0, underscore_1.changeCase)(ret);
|
|
if (flags['_'])
|
|
padChar = ' ';
|
|
else if (flags['0'])
|
|
padChar = '0';
|
|
if (flags['-'])
|
|
padWidth = 0;
|
|
return (0, underscore_1.padStart)(ret, padWidth, padChar);
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZnRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGlxdWlkanMvdXRpbC9zdHJmdGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUEyRDtBQUczRCxNQUFNLE9BQU8sR0FBRywrQkFBK0IsQ0FBQTtBQUMvQyxNQUFNLFVBQVUsR0FBRztJQUNqQixTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUTtJQUN4RSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO0NBQy9DLENBQUE7QUFDRCxNQUFNLFFBQVEsR0FBRztJQUNmLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVU7Q0FDN0UsQ0FBQTtBQUNELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDNUMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUN4QyxNQUFNLFFBQVEsR0FBRztJQUNmLENBQUMsRUFBRSxJQUFJO0lBQ1AsQ0FBQyxFQUFFLElBQUk7SUFDUCxDQUFDLEVBQUUsSUFBSTtJQUNQLFNBQVMsRUFBRSxJQUFJO0NBQ2hCLENBQUE7QUFPRCxTQUFTLElBQUksQ0FBRSxHQUFXO0lBQ3hCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFDeEIsQ0FBQztBQUVELHVCQUF1QjtBQUN2QixTQUFTLFdBQVcsQ0FBRSxDQUFhO0lBQ2pDLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDbkMsT0FBTyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUs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
|