Вход Регистрация
Файл: error-kitty/node_modules/express/node_modules/qs/lib/parse.js
Строк: 150
<?php
// Load modules

var Utils = require('./utils');


// Declare internals

var internals = {
    
delimiter'&',
    
depth5,
    
arrayLimit20,
    
parameterLimit1000
};


internals.parseValues = function (stroptions) {

    var 
obj = {};
    var 
parts str.split(options.delimiteroptions.parameterLimit === Infinity undefined options.parameterLimit);

    for (var 
0il parts.lengthil; ++i) {
        var 
part parts[i];
        var 
pos part.indexOf(']=') === -part.indexOf('=') : part.indexOf(']=') + 1;

        if (
pos === -1) {
            
obj[Utils.decode(part)] = '';
        }
        else {
            var 
key Utils.decode(part.slice(0pos));
            var 
val Utils.decode(part.slice(pos 1));

            if (!
obj.hasOwnProperty(key)) {
                
obj[key] = val;
            }
            else {
                
obj[key] = [].concat(obj[key]).concat(val);
            }
        }
    }

    return 
obj;
};


internals.parseObject = function (chainvaloptions) {

    if (!
chain.length) {
        return 
val;
    }

    var 
root chain.shift();

    var 
obj = {};
    if (
root === '[]') {
        
obj = [];
        
obj obj.concat(internals.parseObject(chainvaloptions));
    }
    else {
        var 
cleanRoot root[0] === '[' && root[root.length 1] === ']' root.slice(1root.length 1) : root;
        var 
index parseInt(cleanRoot10);
        var 
indexString '' index;
        if (!
isNaN(index) &&
            
root !== cleanRoot &&
            
indexString === cleanRoot &&
            
index <= options.arrayLimit) {

            
obj = [];
            
obj[index] = internals.parseObject(chainvaloptions);
        }
        else {
            
obj[cleanRoot] = internals.parseObject(chainvaloptions);
        }
    }

    return 
obj;
};


internals.parseKeys = function (keyvaloptions) {

    if (!
key) {
        return;
    }

    
// The regex chunks

    
var parent = /^([^[]]*)/;
    var 
child = /([[^[]]*])/g;

    
// Get the parent

    
var segment parent.exec(key);

    
// Don't allow them to overwrite object prototype properties

    
if (Object.prototype.hasOwnProperty(segment[1])) {
        return;
    }

    
// Stash the parent if it exists

    
var keys = [];
    if (
segment[1]) {
        
keys.push(segment[1]);
    }

    
// Loop through children appending to the array until we hit depth

    
var 0;
    while ((
segment child.exec(key)) !== null && options.depth) {

        ++
i;
        if (!
Object.prototype.hasOwnProperty(segment[1].replace(/[|]/g''))) {
            
keys.push(segment[1]);
        }
    }

    
// If there's a remainder, just add whatever is left

    
if (segment) {
        
keys.push('[' key.slice(segment.index) + ']');
    }

    return 
internals.parseObject(keysvaloptions);
};


module.exports = function (stroptions) {

    if (
str === '' ||
        
str === null ||
        
typeof str === 'undefined') {

        return {};
    }

    
options options || {};
    
options.delimiter typeof options.delimiter === 'string' || Utils.isRegExp(options.delimiter) ? options.delimiter internals.delimiter;
    
options.depth typeof options.depth === 'number' options.depth internals.depth;
    
options.arrayLimit typeof options.arrayLimit === 'number' options.arrayLimit internals.arrayLimit;
    
options.parameterLimit typeof options.parameterLimit === 'number' options.parameterLimit internals.parameterLimit;

    var 
tempObj typeof str === 'string' internals.parseValues(stroptions) : str;
    var 
obj = {};

    
// Iterate over the keys and setup the new object

    
var keys Object.keys(tempObj);
    for (var 
0il keys.lengthil; ++i) {
        var 
key keys[i];
        var 
newObj internals.parseKeys(keytempObj[key], options);
        
obj Utils.merge(objnewObj);
    }

    return 
Utils.compact(obj);
};
?>
Онлайн: 0
Реклама