UNPKG

ngx-bootstrap

Version:
53 lines 1.92 kB
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