UNPKG

@visulima/string

Version:

Functions for manipulating strings.

2 lines (1 loc) 1.66 kB
var q=Object.defineProperty;var k=(e,l)=>q(e,"name",{value:l,configurable:!0});var z=Object.defineProperty,_=k((e,l)=>z(e,"name",{value:l,configurable:!0}),"k");const C=new Uint32Array(65536),B=_((e,l)=>{const o=e.length,s=l.length,a=1<<o-1;let c=-1,d=0,y=o,h=o;for(;h--;)C[e.charCodeAt(h)]|=1<<h;for(h=0;h<s;h++){let g=C[l.charCodeAt(h)];const i=g|d;g|=(g&c)+c^c,d|=~(g|c),c&=g,d&a&&y++,c&a&&y--,d=d<<1|1,c=c<<1|~(i|d),d&=i}for(h=o;h--;)C[e.charCodeAt(h)]=0;return y},"myers_32"),D=_((e,l)=>{const o=l.length,s=e.length,a=[],c=[],d=Math.ceil(o/32),y=Math.ceil(s/32);for(let t=0;t<d;t++)c[t]=-1,a[t]=0;let h=0;for(;h<y-1;h++){let t=0,n=-1;const m=h*32,u=Math.min(32,s)+m;for(let r=m;r<u;r++)C[e.charCodeAt(r)]|=1<<r;for(let r=0;r<o;r++){const v=C[l.charCodeAt(r)],A=c[r/32|0]>>>r&1,f=a[r/32|0]>>>r&1,w=v|t,U=((v|f)&n)+n^n|v|f;let M=t|~(U|n),x=n&U;M>>>31^A&&(c[r/32|0]^=1<<r),x>>>31^f&&(a[r/32|0]^=1<<r),M=M<<1|A,x=x<<1|f,n=x|~(w|M),t=M&w}for(let r=m;r<u;r++)C[e.charCodeAt(r)]=0}let g=0,i=-1;const p=h*32,j=Math.min(32,s-p)+p;for(let t=p;t<j;t++)C[e.charCodeAt(t)]|=1<<t;let b=s;for(let t=0;t<o;t++){const n=C[l.charCodeAt(t)],m=c[t/32|0]>>>t&1,u=a[t/32|0]>>>t&1,r=n|g,v=((n|u)&i)+i^i|n|u;let A=g|~(v|i),f=i&v;b+=A>>>s-1&1,b-=f>>>s-1&1,A>>>31^m&&(c[t/32|0]^=1<<t),f>>>31^u&&(a[t/32|0]^=1<<t),A=A<<1|m,f=f<<1|u,i=f|~(r|A),g=A&r}for(let t=p;t<j;t++)C[e.charCodeAt(t)]=0;return b},"myers_x"),I=_((e,l)=>{if(e.length<l.length){const o=l;l=e,e=o}return l.length===0?e.length:e.length<=32?B(e,l):D(e,l)},"distance"),P=_((e,l)=>{let o=1/0,s=0;for(let a=0;a<l.length;a++){const c=I(e,l[a]);c<o&&(o=c,s=a)}return l[s]},"closest");export{P as closest,I as distance};