| "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; |