aboutsummaryrefslogtreecommitdiff
path: root/node_modules/relateurl/lib/parse/query.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/relateurl/lib/parse/query.js')
-rw-r--r--node_modules/relateurl/lib/parse/query.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/node_modules/relateurl/lib/parse/query.js b/node_modules/relateurl/lib/parse/query.js
new file mode 100644
index 000000000..dbb85045c
--- /dev/null
+++ b/node_modules/relateurl/lib/parse/query.js
@@ -0,0 +1,53 @@
+"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;