config: querystring parsing.

This commit is contained in:
Christopher Jeffrey 2016-12-19 17:07:22 -08:00
parent 0d5811719c
commit fa167d9a8c
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -10,6 +10,7 @@ var Network = require('../protocol/network');
var util = require('../utils/util');
var assert = require('assert');
var fs = require('fs');
var global = util.global;
/**
* @exports config
@ -69,6 +70,12 @@ config.parse = function parse(options) {
merge(data, arg);
}
if (options.hash) {
arg = config.parseHash();
merge(raw, arg.data);
merge(data, arg);
}
if (data.config && !util.isBrowser) {
prefix = config.getPrefix(data);
filename = data.config;
@ -434,24 +441,56 @@ config.parseEnv = function parseEnv(env) {
};
/**
* Parse querystring variables.
* Parse uri querystring variables.
* @param {String} query
* @returns {Object}
*/
config.parseQuery = function parseQuery(query) {
if (query == null) {
if (!util.isBrowser || !global.location)
return {};
query = global.location.search || '';
}
return config.parseForm(query);
};
/**
* Parse uri hash variables.
* @param {String} hash
* @returns {Object}
*/
config.parseHash = function parseHash(hash) {
if (hash == null) {
if (!util.isBrowser || !global.location)
return {};
hash = global.location.hash || '';
}
return config.parseForm(hash);
};
/**
* Parse form-urlencoded variables.
* @param {String} query
* @returns {Object}
*/
config.parseForm = function parseForm(query) {
var data = {};
var i, parts, index, pair, key, value, alias;
if (!util.isBrowser)
assert(typeof query === 'string');
if (query.length === 0)
return data;
if (query == null) {
query = util.global.location.search;
if (typeof query !== 'string')
return data;
if (query[0] === '?' || query[0] === '#')
query = query.substring(1);
}
parts = query.split('&');