UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

46 lines 3.48 kB
import { orderBy, skip } from "../logic"; /**Divide la cadena en tokens donde cada token corresponde a un match de una parte de la cadena con cierto regex * Las partes de la cadena que no encajen se devuelven con un regexp indefinido */ export function regexParse(text, patterns) { let index = 0; let ret = []; while (index < text.length) { const curr = text.substr(index); const matches = patterns .map(regex => ({ exec: regex.exec(curr), regex })) .filter(x => x.exec != null); ; const firstMatch = orderBy(matches, x => x.exec.index)[0]; if (firstMatch === undefined) { //Ya no hay mas ocurrencias del regex: break; } const result = firstMatch.exec; const value = result[0]; const groups = skip(result, 1); if (result.index > 0) { //Un pedazo de la cadena que no encajó con ninguno: ret.push({ value: curr.substr(0, result.index) }); } ret.push({ value: curr.substr(result.index, value.length), regex: firstMatch.regex, groups: groups }); index += result.index + value.length; } if (index < text.length) { const val = text.substr(index); ret.push({ value: val, }); } return ret; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RyaW5ncy9yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBa0IsTUFBTSxVQUFVLENBQUM7QUFZekQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVksRUFBRSxRQUFrQjtJQUN2RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLEdBQUcsR0FBaUIsRUFBRSxDQUFDO0lBQzNCLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFFeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FDVCxRQUFRO2FBQ0gsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNYLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRTtZQUN2QixLQUFLO1NBQ1IsQ0FBQyxDQUFDO2FBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FDL0I7UUFDTCxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQXNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUMxQixzQ0FBc0M7WUFDdEMsTUFBTTtTQUNUO1FBRUQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvQixJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLG1EQUFtRDtZQUNuRCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNOO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM5QyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7WUFDdkIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUN4QztJQUVELElBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDcEIsTUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ0wsS0FBSyxFQUFFLEdBQUc7U0FDYixDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyJ9