Files
cdnjs/ajax/libs/punycode/0.0.2/punycode.min.js
T

1 line
2.9 KiB
JavaScript

var punycode=new function(){function r(r){return 10>r-48?r-22:26>r-65?r-65:26>r-97?r-97:a}function o(r,o){return r+22+75*(26>r)-((0!=o)<<5)}function e(r,o,e){var n;for(r=e?Math.floor(r/i):r>>1,r+=Math.floor(r/o),n=0;r>(a-u)*c>>1;n+=a)r=Math.floor(r/(a-u));return Math.floor(n+(a-u+1)*r/(r+d))}function n(r,o){return r-=(26>r-97)<<5,r+((!o&&26>r-65)<<5)}this.utf16={decode:function(r){for(var o,e,n=[],t=0,f=r.length;f>t;){if(o=r.charCodeAt(t++),55296===(63488&o)){if(e=r.charCodeAt(t++),55296!==(64512&o)||56320!==(64512&e))throw new RangeError("UTF-16(decode): Illegal UTF-16 sequence");o=((1023&o)<<10)+(1023&e)+65536}n.push(o)}return n},encode:function(r){for(var o,e=[],n=0,t=r.length;t>n;){if(o=r[n++],55296===(63488&o))throw new RangeError("UTF-16(encode): Illegal UTF-16 value");o>65535&&(o-=65536,e.push(String.fromCharCode(o>>>10&1023|55296)),o=56320|1023&o),e.push(String.fromCharCode(o))}return e.join("")}};var t=128,f=72,h="-",a=36,i=700,u=1,c=26,d=38,l=2147483647;this.decode=function(o,n){var i,d,p,g,s,C,v,w,y,A,E,M,m,R=[],_=[],S=o.length;for(i=t,p=0,g=f,s=o.lastIndexOf(h),0>s&&(s=0),C=0;s>C;++C){if(n&&(_[R.length]=o.charCodeAt(C)-65<26),o.charCodeAt(C)>=128)throw new RangeError("Illegal input >= 0x80");R.push(o.charCodeAt(C))}for(v=s>0?s+1:0;S>v;){for(w=p,y=1,A=a;;A+=a){if(v>=S)throw RangeError("punycode_bad_input(1)");if(E=r(o.charCodeAt(v++)),E>=a)throw RangeError("punycode_bad_input(2)");if(E>Math.floor((l-p)/y))throw RangeError("punycode_overflow(1)");if(p+=E*y,M=g>=A?u:A>=g+c?c:A-g,M>E)break;if(y>Math.floor(l/(a-M)))throw RangeError("punycode_overflow(2)");y*=a-M}if(d=R.length+1,g=e(p-w,d,0===w),Math.floor(p/d)>l-i)throw RangeError("punycode_overflow(3)");i+=Math.floor(p/d),p%=d,n&&_.splice(p,0,o.charCodeAt(v-1)-65<26),R.splice(p,0,i),p++}if(n)for(p=0,m=R.length;m>p;p++)_[p]&&(R[p]=String.fromCharCode(R[p]).toUpperCase().charCodeAt(0));return this.utf16.encode(R)},this.encode=function(r,i){var d,p,g,s,C,v,w,y,A,E,M,m;i&&(m=this.utf16.decode(r)),r=this.utf16.decode(r.toLowerCase());var R=r.length;if(i)for(v=0;R>v;v++)m[v]=r[v]!=m[v];var _=[];for(d=t,p=0,C=f,v=0;R>v;++v)r[v]<128&&_.push(String.fromCharCode(m?n(r[v],m[v]):r[v]));for(g=s=_.length,s>0&&_.push(h);R>g;){for(w=l,v=0;R>v;++v)M=r[v],M>=d&&w>M&&(w=M);if(w-d>Math.floor((l-p)/(g+1)))throw RangeError("punycode_overflow (1)");for(p+=(w-d)*(g+1),d=w,v=0;R>v;++v){if(M=r[v],d>M&&++p>l)return Error("punycode_overflow(2)");if(M==d){for(y=p,A=a;E=C>=A?u:A>=C+c?c:A-C,!(E>y);A+=a)_.push(String.fromCharCode(o(E+(y-E)%(a-E),0))),y=Math.floor((y-E)/(a-E));_.push(String.fromCharCode(o(y,i&&m[v]?1:0))),C=e(p,g+1,g==s),p=0,++g}}++p,++d}return _.join("")},this.ToASCII=function(r){for(var o=r.split("."),e=[],n=0;n<o.length;++n){var t=o[n];e.push(t.match(/[^A-Za-z0-9-]/)?"xn--"+punycode.encode(t):t)}return e.join(".")},this.ToUnicode=function(r){for(var o=r.split("."),e=[],n=0;n<o.length;++n){var t=o[n];e.push(t.match(/^xn--/)?punycode.decode(t.slice(4)):t)}return e.join(".")}};module.exports=punycode;