UNPKG

ngx-bootstrap

Version:
52 lines 1.97 kB
import { zeroFill } from '../utils/zero-fill'; import { isFunction } from '../utils/type-checks'; export var formatFunctions = {}; export var formatTokenFunctions = {}; // tslint:disable-next-line 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) { if (token) { formatTokenFunctions[token] = callback; } if (padded) { formatTokenFunctions[padded[0]] = function () { return zeroFill(callback.apply(null, arguments), padded[1], padded[2]); }; } if (ordinal) { formatTokenFunctions[ordinal] = function (date, opts) { return opts.locale.ordinal(callback.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, isUTC, offset) { if (offset === void 0) { offset = 0; } var output = ''; for (var j = 0; j < length; j++) { output += isFunction(formatArr[j]) ? formatArr[j].call(null, date, { format: format, locale: locale, isUTC: isUTC, offset: offset }) : formatArr[j]; } return output; }; } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { return input.replace(/^\[|\]$/g, ''); } return input.replace(/\\/g, ''); } //# sourceMappingURL=format.js.map