-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjurl.min.js
1 lines (1 loc) · 3.12 KB
/
jurl.min.js
1
var jurl=function(a){function d(a){return null===a||"undefined"==typeof a||""===e(a)}function e(a){return null===a||"undefined"==typeof a?a:(a+="",a.replace(/(^\s*)|(\s*$)/g,""))}function f(a){var b=/^((((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp):\/\/)?(www\.)?([a-zA-Z0-9\-\.]+(\.[a-zA-Z]{2,3})?(:[a-zA-Z0-9]*)?))?(\/[%.a-zA-Z0-9\-_\/]*)?)(\?([a-zA-Z0-9\-_&=%.\/]*))?(#([a-zA-Z0-9\-\/]*)(\?([a-zA-Z0-9\-_&=\.\/|+%]*))?)?$/,c=b.exec(a);return c<3?"":{base:"undefined"==typeof c[2]?"":c[2],urlParameters:h(c[9]),queryParameters:g(c[11]),hashParameter:c[13],hashQueryParameters:g(c[15])}}function g(a){if(d(a))return{};var e,b={},c=a.split("&");for(e=0;e<c.length;e+=1){var f=c[e].split("=");b[f[0]]="",f.length>1&&(b[f[0]]=f[1])}return b}function h(a){if(d(a))return[];var e,b=[],c=a.split("/");for(e=0;e<c.length;e+=1)d(c[e])||b.push(c[e]);return b}var b=this,c=f(a);return b.addUrlParameter=function(a,f){return a=e(a),d(a)||(d(f)&&isNaN(f)?c.urlParameters.push(a):f<c.urlParameters.length&&c.urlParameters.splice(f,0,a)),b},b.setQueryParameter=function(a,f){return a=e(a),d(a)||(c.queryParameters[a]="",d(f)||(c.queryParameters[a]=f)),b},b.setHashParameter=function(a){return a=e(a),d(a)&&(c.hashParameter=null),c.hashParameter=e(a),b},b.setHashQueryParameter=function(a,f){return a=e(a),d(a)||(c.hashQueryParameters[a]="",d(f)||(c.hashQueryParameters[a]=f)),b},b.getHashQueryParameter=function(a){return a=e(a),d(a)||!c.hashQueryParameters.hasOwnProperty(a)?null:c.hashQueryParameters[a]},b.updateCurrentHash=function(){var a=b.buildHash();return null!==a?document.location.hash=a:document.location.hash="",b},b.getHashParameter=function(){return c.hashParameter},b.getQueryParameter=function(a){return a=e(a),d(a)||!c.queryParameters.hasOwnProperty(a)?null:c.queryParameters[a]},b.getParameterIndex=function(a){a=e(a);var b;for(b=0;b<c.urlParameters.length;b+=1)if(c.urlParameters[b]===a)return b;return null},b.getHost=function(a){return c.base},b.removeUrlParameter=function(a){return a=e(a),c.urlParameters.indexOf(a)>-1&&c.urlParameters.splice(c.urlParameters.indexOf(a),1),b},b.removeQueryParameter=function(a){return a=e(a),c.queryParameters.hasOwnProperty(a)&&delete c.queryParameters[a],b},b.removeHashQueryParameter=function(a){return a=e(a),c.hashQueryParameters.hasOwnProperty(a)&&delete c.hashQueryParameters[a],b},b.build=function(){var a=c.base;c.urlParameters.length>0&&(a+="/"+c.urlParameters.join("/"));var f,e=[];for(f in c.queryParameters)if(c.queryParameters.hasOwnProperty(f)){var g=f,h=c.queryParameters[f];d(h)||(g+="="+h),e.push(g)}e.length>0&&(a+="?"+e.join("&"));var i=b.buildHash();return null!==i&&(a+="#"+i),a},b.buildHash=function(){if(d(c.hashParameter)&&0===Object.keys(c.hashQueryParameters).length)return null;var a="";if(d(c.hashParameter)||(a+=c.hashParameter),Object.keys(c.hashQueryParameters).length>0){var b=[];for(p in c.hashQueryParameters)if(c.hashQueryParameters.hasOwnProperty(p)){var e=p,f=c.hashQueryParameters[p];d(f)||(e+="="+f),b.push(e)}b.length>0&&(a+="?"+b.join("&"))}return a},b};!function(a){a.fn.jurl=function(){if(this.attr("href"))return new jurl(this.attr("href"));throw"Not href attribute on element: "+input}}(jQuery);