]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/javascript/yui3/build/querystring/querystring-stringify.js
Release 6.2.2
[Github/sugarcrm.git] / include / javascript / yui3 / build / querystring / querystring-stringify.js
1 /*
2  Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3  Code licensed under the BSD License:
4  http://developer.yahoo.com/yui/license.html
5  version: 3.3.0
6  build: 3167
7  */
8 YUI.add('querystring-stringify',function(Y){var QueryString=Y.namespace("QueryString"),stack=[],L=Y.Lang;QueryString.escape=encodeURIComponent;QueryString.stringify=function(obj,c,name){var begin,end,i,l,n,s,sep=c&&c.sep?c.sep:"&",eq=c&&c.eq?c.eq:"=",aK=c&&c.arrayKey?c.arrayKey:false;if(L.isNull(obj)||L.isUndefined(obj)||L.isFunction(obj)){return name?QueryString.escape(name)+eq:'';}
9 if(L.isBoolean(obj)||Object.prototype.toString.call(obj)==='[object Boolean]'){obj=+obj;}
10 if(L.isNumber(obj)||L.isString(obj)){return QueryString.escape(name)+eq+QueryString.escape(obj);}
11 if(L.isArray(obj)){s=[];name=aK?name+'[]':name;l=obj.length;for(i=0;i<l;i++){s.push(QueryString.stringify(obj[i],c,name));}
12 return s.join(sep);}
13 for(i=stack.length-1;i>=0;--i){if(stack[i]===obj){throw new Error("QueryString.stringify. Cyclical reference");}}
14 stack.push(obj);s=[];begin=name?name+'[':'';end=name?']':'';for(i in obj){if(obj.hasOwnProperty(i)){n=begin+i+end;s.push(QueryString.stringify(obj[i],c,n));}}
15 stack.pop();s=s.join(sep);if(!s&&name){return name+"=";}
16 return s;};},'3.3.0');