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