simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
50 lines • 3.61 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.regexParse = void 0;
const logic_1 = require("../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
*/
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 = (0, logic_1.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 = (0, logic_1.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;
}
exports.regexParse = regexParse;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RyaW5ncy9yZWdleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBeUQ7QUFZekQ7O0dBRUc7QUFDSCxTQUFnQixVQUFVLENBQUMsSUFBWSxFQUFFLFFBQWtCO0lBQ3ZELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksR0FBRyxHQUFpQixFQUFFLENBQUM7SUFDM0IsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUV4QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUNULFFBQVE7YUFDSCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFFO1lBQ3ZCLEtBQUs7U0FDUixDQUFDLENBQUM7YUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUMvQjtRQUNMLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBc0IsSUFBQSxlQUFPLEVBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3RSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDMUIsc0NBQXNDO1lBQ3RDLE1BQU07U0FDVDtRQUVELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDL0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUEsWUFBSSxFQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvQixJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLG1EQUFtRDtZQUNuRCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ3RDLENBQUMsQ0FBQztTQUNOO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM5QyxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUs7WUFDdkIsTUFBTSxFQUFFLE1BQU07U0FDakIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUN4QztJQUVELElBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDcEIsTUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ0wsS0FBSyxFQUFFLEdBQUc7U0FDYixDQUFDLENBQUM7S0FDTjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQWpERCxnQ0FpREMifQ==
;