ngx-bootstrap
Version:
Native Angular Bootstrap Components
53 lines • 1.92 kB
JavaScript
import { zeroFill } from './utils';
import { isFunction } from './utils/type-checks';
export var formatFunctions = {};
export var formatTokenFunctions = {};
export var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
// token: 'M'
// padded: ['MM', 2]
// ordinal: 'Mo'
// callback: function () { this.month() + 1 }
export function addFormatToken(token, padded, ordinal, callback) {
var func = callback;
if (token) {
formatTokenFunctions[token] = func;
}
if (padded) {
var key = padded[0];
formatTokenFunctions[key] = function (date, format, locale) {
return zeroFill(func.apply(null, arguments), padded[1], padded[2]);
};
}
if (ordinal) {
formatTokenFunctions[ordinal] = function (date, format, locale) {
// todo: fix this
return locale.ordinal(func.apply(null, arguments), token);
};
}
}
export function makeFormatFunction(format) {
var array = format.match(formattingTokens);
var length = array.length;
var formatArr = new Array(length);
for (var i = 0; i < length; i++) {
formatArr[i] = formatTokenFunctions[array[i]]
? formatTokenFunctions[array[i]]
: removeFormattingTokens(array[i]);
}
return function (date, locale) {
var output = '';
for (var j = 0; j < length; j++) {
output += isFunction(formatArr[j])
? formatArr[j].call(null, date, format, locale)
: formatArr[j];
}
return output;
};
}
function removeFormattingTokens(input) {
if (input.match(/\[[\s\S]/)) {
return input.replace(/^\[|\]$/g, '');
}
return input.replace(/\\/g, '');
}
//# sourceMappingURL=format-functions.js.map