export default function()

in public/src/js/utils/parse-query-params.js [15:51]


export default function(url = window.location.search, opts = {}) {
    var nsIndex = opts.excludeNamespace ? -1 : 0,
        nsStrip = opts.namespace && opts.stripNamespace && !opts.excludeNamespace,
        nsLength = opts.namespace ? ('' + opts.namespace).length : 0,
        result = {};

    _.chain(urlQuery(url).split('&'))
        .filter(function(kv) {
            return kv; })

        .map(function(kv) {
            return kv.split('='); })

        .filter(function(kv) {
            return _.isFunction(opts.predicateKey) ? opts.predicateKey(kv[0]) : true; })

        .filter(function(kv) {
            return _.isFunction(opts.predicateVal) ? opts.predicateVal(kv[1]) : true; })

        .filter(function(kv) {
            return !opts.namespace || kv[0].indexOf(opts.namespace) === nsIndex; })

        .map(function(kv) {
            var key = nsStrip ? kv[0].slice(nsLength) : kv[0],
                value = kv[1] === undefined ? undefined : decodeURIComponent(kv[1].replace(/\+/g, ' '));

            if (opts.multipleValues) {
                if (!_.has(result, key)) {
                    result[key] = [];
                }
                result[key].push(value);
            } else {
                result[key] = value;
            }
        });
    return result;
}