UNPKG

@berish/mvc-router5-plugin

Version:

Router5 plugin for @berish/mvc-core

47 lines 1.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parsePath = void 0; const linq_1 = __importDefault(require("@berish/linq")); const regExpForDigits = /^([\d]+)/gm; function parsePath(params) { const parseValue = (value) => { if (!value) return null; if (value === '[]') return []; if (value.toLowerCase() === 'false') return false; if (value.toLowerCase() === 'true') return true; if (!isNaN(Number(value))) return Number(value); return value; }; const parseCurrentPath = (params) => { const allKeys = linq_1.default.from(Object.keys(params)); const currentKeys = allKeys.where((m) => m.indexOf('.') === -1); const out = allKeys.every((m) => m.search(regExpForDigits) !== -1) ? [] : {}; for (const currentKey of currentKeys) { out[currentKey] = parseValue(params[currentKey]); } const allSubKeys = allKeys.except(currentKeys); const subKeys = allSubKeys.select((m) => m.split('.')[0]).distinct(); for (const subKey of subKeys) { const currentSubKeys = allSubKeys .where((m) => m.startsWith(subKey + '.')) .select((m) => m.substring(subKey.length + 1)); const newParams = {}; for (const currentSubKey of currentSubKeys) { newParams[currentSubKey] = params[subKey + '.' + currentSubKey]; } out[subKey] = parseCurrentPath(newParams); } return out; }; return parseCurrentPath(params); } exports.parsePath = parsePath; //# sourceMappingURL=parsePath.js.map