54 lines
878 B
JavaScript
54 lines
878 B
JavaScript
"use strict";
|
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
|
|
|
|
|
|
function parseQuery(urlObj, options)
|
|
{
|
|
urlObj.query.string.full = stringify(urlObj.query.object, false);
|
|
|
|
// TWEAK :: condition only for speed optimization
|
|
if (options.removeEmptyQueries)
|
|
{
|
|
urlObj.query.string.stripped = stringify(urlObj.query.object, true);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function stringify(queryObj, removeEmptyQueries)
|
|
{
|
|
var count = 0;
|
|
var str = "";
|
|
|
|
for (var i in queryObj)
|
|
{
|
|
if ( i!=="" && hasOwnProperty.call(queryObj, i)===true )
|
|
{
|
|
var value = queryObj[i];
|
|
|
|
if (value !== "" || !removeEmptyQueries)
|
|
{
|
|
str += (++count===1) ? "?" : "&";
|
|
|
|
i = encodeURIComponent(i);
|
|
|
|
if (value !== "")
|
|
{
|
|
str += i +"="+ encodeURIComponent(value).replace(/%20/g,"+");
|
|
}
|
|
else
|
|
{
|
|
str += i;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
|
|
|
|
module.exports = parseQuery;
|