UNPKG

@visulima/string

Version:

Functions for manipulating strings.

2 lines (1 loc) 8.23 kB
var D=Object.defineProperty;var m=(t,s)=>D(t,"name",{value:s,configurable:!0});import{stripVTControlCharacters as z}from"node:util";import{j as I,s as F,k as J,R as j,l as k,m as C,n as W,o as Y,p as $,q as N,r as V,t as B,u as S,v as O,w as q,x as Z,y as Q,z as X,A as tt,B as et,C as st,D as at,E as nt,F as rt,G as lt,H as ot,I as it,J as ct,K as pt,L as ft,M as x}from"../packem_shared/constants-CDcaCZKC.mjs";import ht from"../packem_shared/LRUCache-Bjo6gsbC.mjs";var ut=Object.defineProperty,gt=m((t,s)=>ut(t,"name",{value:s,configurable:!0}),"g");const T=new ht(1e3),At=gt(t=>{const s=t.join("");if(T.has(s))return T.get(s);const p=t.map(R=>R.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)).join("|"),u=new RegExp(p,"g");return T.set(s,u),u},"getSeparatorsRegex");var Et=Object.defineProperty,Rt=m((t,s)=>Et(t,"name",{value:s,configurable:!0}),"t");const Lt=Rt(t=>{const s=[];let p=0,u;for(I.lastIndex=0;(u=I.exec(t))!==null;)u.index>p&&s.push(t.slice(p,u.index)),s.push(u[0]),p=I.lastIndex;return p<t.length&&s.push(t.slice(p)),s.filter(Boolean)},"splitByEmoji");var Ct=Object.defineProperty,g=m((t,s)=>Ct(t,"name",{value:s,configurable:!0}),"u");const G=new Uint8Array(128),K=new Uint8Array(128),M=new Uint8Array(128);for(let t=0;t<128;t++)G[t]=t>=65&&t<=90?1:0,K[t]=t>=97&&t<=122?1:0,M[t]=t>=48&&t<=57?1:0;const w=g(t=>G[t],"isUpper"),v=g(t=>K[t],"isLower"),y=g(t=>M[t],"isDigit"),_=g((t,s,p,u,R)=>{if(t.length===0)return[];let c=!1;for(const r of Object.values(s))if(r(t[0])){c=!0;break}if(!c&&!p)return[t];const A=[...t],h=[];let L=A[0],e="other";for(const[r,a]of Object.entries(s))if(a(A[0])){e=r;break}let l=p&&u?A[0]===A[0].toLocaleUpperCase(u):!1;for(let r=1;r<A.length;r++){const a=A[r];let o="other";for(const[f,E]of Object.entries(s))if(E(a)){o=f;break}const i=p&&u?a===a.toLocaleUpperCase(u):!1;let n=!1;R?n=R(e,o,l,i,a,r,A):(e!==o&&e!=="other"&&o!=="other"&&(n=!0),p&&o!=="other"&&!l&&i&&(n=!0)),n?(h.push(L),L=a):L+=a,e=o,p&&(l=i)}return L&&L.length>0&&h.push(L),h.length>0?h:[t]},"handleScriptTransitions"),H=g((t,s=new Set)=>{if(t.length===0)return[];if(t.toUpperCase()===t)return[t];let p=0;const u=[],R=t.length;for(let c=1;c<R;c++){const A=t.codePointAt(c-1),h=t.codePointAt(c);if(s.size>0){for(const o of s)if(t.startsWith(o,p)){u.push(o),p+=o.length,c=p-1;break}if(c<p)continue}const L=A&&A<128&&w(A),e=h&&h<128&&w(h),l=A&&A<128&&v(A),r=A&&A<128&&y(A),a=h&&h<128&&y(h);if(l&&e){u.push(t.slice(p,c)),p=c;continue}if(r&&!a||!r&&a){u.push(t.slice(p,c)),p=c;continue}if(a&&!r){let o=!1,i=!1;if(c+1<R){const n=t.codePointAt(c+1);o=n&&n<128&&w(n),i=n&&n<128&&y(n)}if(!i&&o){u.push(t.slice(p,c),t.slice(c,c+1)),p=c+1;continue}}if(c+1<R){const o=t.codePointAt(c+1),i=o&&o<128&&v(o);if(L&&e&&i){const n=t.slice(p,c+1);s.has(n)||(u.push(t.slice(p,c)),p=c)}}}return p<R&&u.push(t.slice(p)),u.filter(c=>c!=="")},"splitCamelCaseFast"),P=g((t,s,p)=>{if(t.length===0)return[];const u=t===t.toLocaleUpperCase(s);if(s.startsWith("de")){if(!u&&t.replaceAll("ß","SS")===t.toLocaleUpperCase(s))return[t];const e=[...t],l=e.length,r=[];let a=e[0],o=e[0]===e[0].toLocaleUpperCase(s),i=o,n=o?0:-1;for(let f=1;f<l;f++){const E=e[f],U=E===E.toLocaleUpperCase(s);if(U===o)a+=E;else if(U)a&&a.length>0&&(r.push(a),a=E),i=!0,n=f;else{if(i&&f-n>1){const d=e[f-1],b=a.slice(0,-1);b&&b.length>0&&r.push(b),a=d+E}else a+=E;i=!1,n=-1}o=U}return a&&a.length>0&&r.push(a),r}if(s.startsWith("uk")||s.startsWith("ru")||s.startsWith("bg")||s.startsWith("sr")||s.startsWith("mk")||s.startsWith("be")){if(!k.test(t)&&!C.test(t))return[t];const e=[...t],l=e.length,r=[];let a=e[0],o=k.test(e[0])?1:C.test(e[0])?2:0,i=e[0]===e[0].toLocaleUpperCase(s);for(let f=1;f<l;f++){const E=e[f],U=k.test(E)?1:C.test(E)?2:0,d=E===E.toLocaleUpperCase(s);o!==U&&(o===1||o===2)&&(U===1||U===2)||U===o&&!i&&d?(r.push(a),a=E):a+=E,o=U,i=d}a&&a.length>0&&r.push(a);const n=[];for(let f=0;f<r.length;f++)f<r.length-1&&r[f].length===1&&C.test(r[f])&&k.test(r[f+1][0])?(n.push(r[f]+r[f+1]),f+=1):n.push(r[f]);return n}if(s.startsWith("el")){if(!W.test(t)&&!C.test(t))return[t];const e=t.match(Y)??[t],l=[];if(e.length===1){const r=e[0];if(!r||!W.test(r[0])||r.length===1)return[r||t]}for(const r of e){if(!r)continue;if(!W.test(r[0])||r.length===1){l.push(r);continue}const a=r.length;let o=r[0],i=r[0]===r[0].toLocaleUpperCase(s);for(let n=1;n<a;n++){const f=r[n],E=f===f.toLocaleUpperCase(s);!i&&E?(l.push(o),o=f):o+=f,i=E}o&&l.push(o)}return l}if(s.startsWith("ja")||s.startsWith("ko")){const e=s.startsWith("ja"),l=e?{hiragana:g(a=>V.test(a),"hiragana"),kanji:g(a=>N.test(a),"kanji"),katakana:g(a=>$.test(a),"katakana"),latin:g(a=>C.test(a),"latin")}:{hangul:g(a=>B.test(a),"hangul"),latin:g(a=>C.test(a),"latin")},r=new Set(["が","で","と","に","の","は","へ","も","や","を"]);if(e){const a=_(t,l,!1,s,(i,n)=>i==="hiragana"&&n==="katakana"||i==="katakana"&&n==="hiragana"||i==="hiragana"&&n==="latin"||i==="katakana"&&n==="latin"||i==="kanji"&&n==="latin"||i==="latin"&&(n==="hiragana"||n==="katakana"||n==="kanji")),o=[];for(const i of a)i.length===1&&r.has(i)&&o.length>0?o[o.length-1]+=i:o.push(i);return o.length>0?o:[t]}return _(t,l,!1,s,(a,o)=>a==="hangul"&&o==="latin"||a==="latin"&&o==="hangul")}if(s.startsWith("sl")){const e=[...t],l=e.length,r=[];let a=e[0],o=e[0]===e[0].toLocaleUpperCase(s);for(let i=1;i<l;i++){const n=e[i],f=n===n.toLocaleUpperCase(s),E=/[ČŠŽĐ]/i.test(n),U=i<l-1&&e[i+1]===e[i+1].toLocaleUpperCase(s);!o&&f||E&&U?(r.push(a),a=n,E&&U&&(r.push(a),a="")):a+=n,o=f}return a&&a.length>0&&r.push(a),r}if(s.startsWith("zh"))return _(t,{han:g(e=>N.test(e),"han"),latin:g(e=>C.test(e),"latin")},!1,s);if(["ar","fa","he","ur"].includes(s.split("-")[0])){const e=g(l=>S.test(l)||O.test(l),"isRtlChar");return _(t,{latin:g(l=>C.test(l),"latin"),rtl:g(l=>e(l),"rtl")},!1,s)}if(["am","bn","gu","hi","km","kn","lo","ml","mr","ne","or","pa","si","ta","te","th"].includes(s.split("-")[0])){const e=g(l=>q.test(l)||Z.test(l)||Q.test(l)||X.test(l)||tt.test(l)||et.test(l)||st.test(l)||at.test(l)||nt.test(l)||rt.test(l)||lt.test(l)||ot.test(l)||it.test(l)||ct.test(l)||pt.test(l)||ft.test(l),"isIndicChar");return _(t,{indic:g(l=>e(l),"indic"),latin:g(l=>C.test(l),"latin")},!1,s)}if(["be","bg","ru","sr","uk"].includes(s))return _(t,{cyrillic:g(e=>k.test(e),"cyrillic"),latin:g(e=>C.test(e),"latin")},!0,s);if(["ar","fa","he"].includes(s))return _(t,{latin:g(e=>C.test(e),"latin"),rtl:g(e=>S.test(e)||O.test(e),"rtl")},!1,s);if(s.startsWith("ko"))return _(t,{hangul:g(e=>B.test(e),"hangul"),latin:g(e=>C.test(e),"latin")},!1,s);if(s.startsWith("uz")){if(!k.test(t)&&!C.test(t))return[t];const e=[...t],l=e.length,r=[];let a=e[0],o=e[0]===e[0].toLocaleUpperCase(s);for(let i=1;i<l;i++){const n=e[i],f=n===n.toLocaleUpperCase(s);if(x.test(n)||x.test(e[i-1])){a+=n;continue}!o&&f?(r.push(a),a=n):a+=n,o=f}return a&&a.length>0&&r.push(a),r}const R=[...t],c=R.length,A=[];let h=R[0],L=R[0]===R[0].toLocaleUpperCase(s);for(const e of p)if(t.startsWith(e)){A.push(e),h=R[e.length],L=h===h.toLocaleUpperCase(s);break}for(let e=1;e<c;e++){const l=R[e],r=l===l.toLocaleUpperCase(s);let a=!1;for(const o of p)if(t.startsWith(o,e)){A.push(h,o),e+=o.length-1,h="",a=!0;break}a||(!L&&r?(A.push(h),h=l):h+=l,L=r)}return h&&A.push(h),A},"splitCamelCaseLocale"),Ut=g((t,s,p)=>{const u=[],R=j.test(t)?t.split(j).filter(Boolean):[t];for(const c of R)if(j.test(c))u.push(c);else{const A=I.test(c)?Lt(c).filter(Boolean):[c];for(const h of A)if(I.test(h))u.push(h);else if(s){const L=s.toLowerCase().split("-")[0];u.push(...P(h,L,p))}else u.push(...H(h,p))}return u},"processTextWithAnsiEmoji"),mt=g((t,s={})=>{if(!t||typeof t!="string")return[];const{handleAnsi:p=!1,handleEmoji:u=!1,knownAcronyms:R=[],locale:c,normalize:A=!1,separators:h,stripAnsi:L=!1,stripEmoji:e=!1}=s,l=new Set([...R].sort((n,f)=>f.length-n.length));let r=t;L&&(r=z(r)),e&&(r=F(r));const a=Array.isArray(h)?At(h):h instanceof RegExp?h:J,o=r.split(a).filter(Boolean);let i=[];for(const n of o)p||u?i.push(...Ut(n,c,l)):c?i.push(...P(n,c,l)):i.push(...H(n,l));return A&&(i=i.map(n=>l.has(n)?n:c&&n===n.toLocaleUpperCase(c)?n[0]+n.slice(1).toLocaleLowerCase(c):n.toUpperCase()===n&&!l.has(n)?n.slice(0,1)+n.slice(1).toLowerCase():n)),i},"splitByCase");export{mt as splitByCase};