UNPKG

navidev-date-and-time

Version:
139 lines (138 loc) 4.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.find = void 0; const types_1 = require("./types"); /** * Ejecuta la expresión regular para el parseo * @param re | Expresion regular * @param str | string donde se aplica * @returns | Estructura con el resultado */ const exec = (re, str) => { let result = (re.exec(str) || [""])[0]; return { value: Number(result), length: result.length }; }; /** * Busca el valor en un array * @param array | Array de valores * @param str | String a buscar * @returns | Estructura con el resultado */ const find = (array, str) => { var index = -1, length = 0; for (var i = 0, len = array.length, item; i < len; i++) { item = array[i]; if (!str.indexOf(item) && item.length > length) { index = i; length = item.length; } } return { value: index, length: length }; }; exports.find = find; class DateTimeParsers { constructor() { /** * Busca el valor en un array * @param array | Array de valores * @param str | String a buscar * @returns | Estructura con el resultado */ this.find = (array, str) => { var index = -1, length = 0; for (var i = 0, len = array.length, item; i < len; i++) { item = array[i]; if (!str.indexOf(item) && item.length > length) { index = i; length = item.length; } } return { value: index, length: length }; }; } /** * Devuelve el parsers de fecha y hora * @returns Objeto con las funciones de parseo */ parser() { return { YYYY: (str) => { return exec(/^\d{4}/, str); }, Y: (str) => { return exec(/^\d{1,4}/, str); }, MM: (str) => { return exec(/^\d\d/, str); }, M: (str) => { return exec(/^\d\d?/, str); }, DD: (str) => { return exec(/^\d\d/, str); }, D: (str) => { return exec(/^\d\d?/, str); }, HH: (str) => { return exec(/^\d\d/, str); }, H: (str) => { return exec(/^\d\d?/, str); }, hh: (str) => { return exec(/^\d\d/, str); }, h: (str) => { return exec(/^\d\d?/, str); }, mm: (str) => { return exec(/^\d\d/, str); }, m: (str) => { return exec(/^\d\d?/, str); }, ss: (str) => { return exec(/^\d\d/, str); }, s: (str) => { return exec(/^\d\d?/, str); }, SSS: (str) => { return exec(/^\d{1,3}/, str); }, SS: (str) => { var result = exec(/^\d\d?/, str); result.value *= 10; return result; }, S: (str) => { var result = exec(/^\d/, str); result.value *= 100; return result; }, ZZ: (str) => { var arr = /^([+-])(\d{2}):([0-5]\d)/.exec(str) || ["", "", "", ""]; return { value: 0 - (((Number(arr[1]) + Number(arr[2])) | 0) * 60 + ((Number(arr[1]) + Number(arr[3])) | 0)), length: arr[0].length, }; }, A: (str) => { return this.find(types_1.A, str); }, }; } /** * Devuelve la hora en formato 24 horas * @param h Hora * @param a 24/12 hora * @returns Hora en formato 24h */ h12(h, a) { return (h === 12 ? 0 : h) + a * 12; } } exports.default = DateTimeParsers;