config: querystring parsing.
This commit is contained in:
parent
0d5811719c
commit
fa167d9a8c
@ -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('&');
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user