forked from jhudson8/backbone-query-parameters
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackbone.queryparams.min.js
7 lines (7 loc) · 3.09 KB
/
backbone.queryparams.min.js
1
2
3
4
5
6
7
(function(e,f){"object"===typeof exports&&e.require?module.exports=f(require("underscore"),require("backbone")):"function"===typeof define&&define.amd?define(["underscore","backbone"],function(l,k){return f(l||e._,k||e.Backbone)}):f(_,Backbone)})(this,function(e,f){function l(a,d){function b(a){return String(a).replace(c,encodeURIComponent(c))}var c=f.Router.arrayValueSplit;if(!a)return"";d=d||"";var h=[];e.each(a,function(a,f){f=d+f;if(e.isString(a)||e.isNumber(a)||e.isBoolean(a)||e.isDate(a))null!=
a&&h.push(f+"="+b(encodeURIComponent(a)));else if(e.isArray(a)){for(var g="",k=0;k<a.length;k++){var n=a[k];null!=n&&(g+=c+b(n))}g&&h.push(f+"="+g)}else(g=l(a,f+"."))&&h.push(g)});return h.join("&")}function k(a){try{return decodeURIComponent(a.replace(/\+/g," "))}catch(d){return a}}function p(a,d){var b=a.split("&");e.each(b,function(a){a=a.split("=");d(a.shift(),a.join("="))})}var q=/^\?(.*)/,s=/\((.*?)\)/g,m=/(\(\?)?:\w+/g,r=/\*\w+/g,t=/[\-{}\[\]+?.,\\\^$|#\s]/g,u=/^([^\?]*)/,v=/[\:\*]([^\:\?\/]+)/g,
w=/^[#\/]|\s+$/g,x=/\/$/;f.Router.arrayValueSplit="|";e.extend(f.History.prototype,{getFragment:function(a,d){if(null==a)if(this._hasPushState||!this._wantsHashChange||d){a=this.location.pathname;var b=this.root.replace(x,""),c=this.location.search;a.indexOf(b)||(a=a.substr(b.length));c&&this._hasPushState&&(a+=c)}else a=this.getHash();return a.replace(w,"")},getQueryParameters:function(a,d){a=this.getFragment(a,d);var b=a.replace(u,"");if(b=b.match(q)){var b=b[1],c={};p(b,function(a,b){b=k(b);c[a]?
e.isString(c[a])?c[a]=[c[a],b]:c[a].push(b):c[a]=b});return c}return{}}});e.extend(f.Router.prototype,{initialize:function(a){this.encodedSplatParts=a&&a.encodedSplatParts},_routeToRegExp:function(a){var d=r.exec(a)||{index:-1},b=m.exec(a)||{index:-1},c=a.match(v)||[];a=a.replace(t,"\\$&").replace(s,"(?:$1)?").replace(m,function(a,b){return b?a:"([^\\/\\?]+)"}).replace(r,"([^??]*?)");a=new RegExp("^"+(a+"(\\?.*)?")+"$");0<=d.index&&(a.splatMatch=0<=b?d.index-b.index:-1);a.paramNames=e.map(c,function(a){return a.substring(1)});
a.namedParameters=this.namedParameters;return a},_extractParameters:function(a,d){var b=a.exec(d).slice(1),c={};0<b.length&&e.isUndefined(b[b.length-1])&&b.splice(b.length-1,1);var h=b.length&&b[b.length-1]&&b[b.length-1].match(q);if(h){var h=h[1],l={};if(h){var m=this;p(h,function(a,b){m._setParamValue(a,b,l)})}b[b.length-1]=l;e.extend(c,l)}h=b.length;if(a.splatMatch&&this.encodedSplatParts){if(0>a.splatMatch)return b;h-=1}for(var g=0;g<h;g++)e.isString(b[g])&&(b[g]=k(b[g]),a.paramNames&&a.paramNames.length>=
g-1&&(c[a.paramNames[g]]=b[g]));return f.Router.namedParameters||a.namedParameters?[c]:b},_setParamValue:function(a,d,b){a=a.replace("[]","");a=a.replace("%5B%5D","");a=a.split(".");for(var c=0;c<a.length;c++){var e=a[c];c===a.length-1?b[e]=this._decodeParamValue(d,b[e]):b=b[e]=b[e]||{}}},_decodeParamValue:function(a,d){var b=f.Router.arrayValueSplit;if(b&&0<=a.indexOf(b)){for(var b=a.split(b),c=b.length-1;0<=c;c--)b[c]?b[c]=k(b[c]):b.splice(c,1);return b}a=k(a);return d?e.isArray(d)?(d.push(a),d):
[d,a]:a},toFragment:function(a,d){d&&(e.isString(d)||(d=l(d)),d&&(a+="?"+d));return a}})});