UNPKG

@visulima/string

Version:

Functions for manipulating strings.

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