array-group-str-omit-num-char
Version:
Groups array of strings by omitting number characters
44 lines (42 loc) • 11.8 kB
JavaScript
/**
* @name array-group-str-omit-num-char
* @fileoverview Groups array of strings by omitting number characters
* @version 6.0.19
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/array-group-str-omit-num-char/}
*/
;var arrayGroupStrOmitNumChar=(()=>{var k=Object.create;var h=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames,O=Object.getOwnPropertySymbols,M=Object.getPrototypeOf,E=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var A=(r,t,o)=>t in r?h(r,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[t]=o,m=(r,t)=>{for(var o in t||(t={}))E.call(t,o)&&A(r,o,t[o]);if(O)for(var o of O(t))B.call(t,o)&&A(r,o,t[o]);return r};var H=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),J=(r,t)=>{for(var o in t)h(r,o,{get:t[o],enumerable:!0})},j=(r,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of V(t))!E.call(r,c)&&c!==o&&h(r,c,{get:()=>t[c],enumerable:!(s=_(t,c))||s.enumerable});return r};var P=(r,t,o)=>(o=r!=null?k(M(r)):{},j(t||!r||!r.__esModule?h(o,"default",{value:r,enumerable:!0}):o,r)),L=r=>j(h({},"__esModule",{value:!0}),r);var R=H((fe,S)=>{"use strict";S.exports=z;function y(r){return r instanceof Buffer?Buffer.from(r):new r.constructor(r.buffer.slice(),r.byteOffset,r.length)}function z(r){if(r=r||{},r.circles)return Q(r);let t=new Map;if(t.set(Date,i=>new Date(i)),t.set(Map,(i,l)=>new Map(s(Array.from(i),l))),t.set(Set,(i,l)=>new Set(s(Array.from(i),l))),r.constructorHandlers)for(let i of r.constructorHandlers)t.set(i[0],i[1]);let o=null;return r.proto?a:c;function s(i,l){let n=Object.keys(i),e=new Array(n.length);for(let u=0;u<n.length;u++){let f=n[u],p=i[f];typeof p!="object"||p===null?e[f]=p:p.constructor!==Object&&(o=t.get(p.constructor))?e[f]=o(p,l):ArrayBuffer.isView(p)?e[f]=y(p):e[f]=l(p)}return e}function c(i){if(typeof i!="object"||i===null)return i;if(Array.isArray(i))return s(i,c);if(i.constructor!==Object&&(o=t.get(i.constructor)))return o(i,c);let l={};for(let n in i){if(Object.hasOwnProperty.call(i,n)===!1)continue;let e=i[n];typeof e!="object"||e===null?l[n]=e:e.constructor!==Object&&(o=t.get(e.constructor))?l[n]=o(e,c):ArrayBuffer.isView(e)?l[n]=y(e):l[n]=c(e)}return l}function a(i){if(typeof i!="object"||i===null)return i;if(Array.isArray(i))return s(i,a);if(i.constructor!==Object&&(o=t.get(i.constructor)))return o(i,a);let l={};for(let n in i){let e=i[n];typeof e!="object"||e===null?l[n]=e:e.constructor!==Object&&(o=t.get(e.constructor))?l[n]=o(e,a):ArrayBuffer.isView(e)?l[n]=y(e):l[n]=a(e)}return l}}function Q(r){let t=[],o=[],s=new Map;if(s.set(Date,n=>new Date(n)),s.set(Map,(n,e)=>new Map(a(Array.from(n),e))),s.set(Set,(n,e)=>new Set(a(Array.from(n),e))),r.constructorHandlers)for(let n of r.constructorHandlers)s.set(n[0],n[1]);let c=null;return r.proto?l:i;function a(n,e){let u=Object.keys(n),f=new Array(u.length);for(let p=0;p<u.length;p++){let d=u[p],g=n[d];if(typeof g!="object"||g===null)f[d]=g;else if(g.constructor!==Object&&(c=s.get(g.constructor)))f[d]=c(g,e);else if(ArrayBuffer.isView(g))f[d]=y(g);else{let b=t.indexOf(g);b!==-1?f[d]=o[b]:f[d]=e(g)}}return f}function i(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return a(n,i);if(n.constructor!==Object&&(c=s.get(n.constructor)))return c(n,i);let e={};t.push(n),o.push(e);for(let u in n){if(Object.hasOwnProperty.call(n,u)===!1)continue;let f=n[u];if(typeof f!="object"||f===null)e[u]=f;else if(f.constructor!==Object&&(c=s.get(f.constructor)))e[u]=c(f,i);else if(ArrayBuffer.isView(f))e[u]=y(f);else{let p=t.indexOf(f);p!==-1?e[u]=o[p]:e[u]=i(f)}}return t.pop(),o.pop(),e}function l(n){if(typeof n!="object"||n===null)return n;if(Array.isArray(n))return a(n,l);if(n.constructor!==Object&&(c=s.get(n.constructor)))return c(n,l);let e={};t.push(n),o.push(e);for(let u in n){let f=n[u];if(typeof f!="object"||f===null)e[u]=f;else if(f.constructor!==Object&&(c=s.get(f.constructor)))e[u]=c(f,l);else if(ArrayBuffer.isView(f))e[u]=y(f);else{let p=t.indexOf(f);p!==-1?e[u]=o[p]:e[u]=l(f)}}return t.pop(),o.pop(),e}}});var ee={};J(ee,{defaults:()=>I,groupStr:()=>Y,version:()=>X});var q={strictlyTwoElementsInRangeArrays:!1,progressFn:null};function $(r,t){if(!Array.isArray(r)||!r.length)return r;let o=m(m({},q),t),s,c;if(o.strictlyTwoElementsInRangeArrays&&!r.every((l,n)=>!Array.isArray(l)||l.length!==2?(s=n,c=l.length,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_03] The first argument should be an array and must consist of arrays which are natural number indexes representing TWO string index ranges. However, ${s}th range (${JSON.stringify(r[s],null,4)}) has not two but ${c} elements!`);if(!r.every((l,n)=>!Array.isArray(l)||!Number.isInteger(l[0])||l[0]<0||!Number.isInteger(l[1])||l[1]<0?(s=n,!1):!0))throw new TypeError(`ranges-sort: [THROW_ID_04] The first argument should be an array and must consist of arrays which are natural number indexes representing string index ranges. However, ${s}th range (${JSON.stringify(r[s],null,4)}) does not consist of only natural numbers!`);let a=r.length**2,i=0;return Array.from(r).sort((l,n)=>(o.progressFn&&(i+=1,o.progressFn(Math.floor(i*100/a))),l[0]===n[0]?l[1]<n[1]?-1:l[1]>n[1]?1:0:l[0]<n[0]?-1:1))}var W={mergeType:1,progressFn:null,joinRangesThatTouchEdges:!0};function T(r,t){function o(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}if(!Array.isArray(r)||!r.length)return null;let s;if(t)if(o(t)){if(s=m(m({},W),t),s.progressFn&&o(s.progressFn)&&!Object.keys(s.progressFn).length)s.progressFn=null;else if(s.progressFn&&typeof s.progressFn!="function")throw new Error(`ranges-merge: [THROW_ID_01] opts.progressFn must be a function! It was given of a type: "${typeof s.progressFn}", equal to ${JSON.stringify(s.progressFn,null,4)}`);if(![1,2,"1","2"].includes(s.mergeType))throw new Error(`ranges-merge: [THROW_ID_02] opts.mergeType was customised to a wrong thing! It was given of a type: "${typeof s.mergeType}", equal to ${JSON.stringify(s.mergeType,null,4)}`);if(typeof s.joinRangesThatTouchEdges!="boolean")throw new Error(`ranges-merge: [THROW_ID_04] opts.joinRangesThatTouchEdges was customised to a wrong thing! It was given of a type: "${typeof s.joinRangesThatTouchEdges}", equal to ${JSON.stringify(s.joinRangesThatTouchEdges,null,4)}`)}else throw new Error(`emlint: [THROW_ID_03] the second input argument must be a plain object. It was given as:
${JSON.stringify(t,null,4)} (type ${typeof t})`);else s=m({},W);let c=r.filter(e=>Array.isArray(e)).map(e=>[...e]).filter(e=>e[2]!==void 0||e[0]!==e[1]),a,i,l;s.progressFn?a=$(c,{progressFn:e=>{l=Math.floor(e/5),l!==i&&(i=l,s.progressFn(l))}}):a=$(c);let n=a.length-1;for(let e=n;e>0;e--)s.progressFn&&(l=Math.floor((1-e/n)*78)+21,l!==i&&l>i&&(i=l,s.progressFn(l))),(a[e][0]<=a[e-1][0]||!s.joinRangesThatTouchEdges&&a[e][0]<a[e-1][1]||s.joinRangesThatTouchEdges&&a[e][0]<=a[e-1][1])&&(a[e-1][0]=Math.min(a[e][0],a[e-1][0]),a[e-1][1]=Math.max(a[e][1],a[e-1][1]),a[e][2]!==void 0&&(a[e-1][0]>=a[e][0]||a[e-1][1]<=a[e][1])&&a[e-1][2]!==null&&(a[e][2]===null&&a[e-1][2]!==null?a[e-1][2]=null:a[e-1][2]!=null?+s.mergeType==2&&a[e-1][0]===a[e][0]?a[e-1][2]=a[e][2]:a[e-1][2]+=a[e][2]:a[e-1][2]=a[e][2]),a.splice(e,1),e=a.length);return a.length?a:null}var U=!0,w="Invariant failed";function v(r,t){if(!r){if(U)throw new Error(w);var o=typeof t=="function"?t():t,s=o?"".concat(w,": ").concat(o):w;throw new Error(s)}}function D(r,t,o){let s=0,c=0;if(arguments.length===0)throw new Error("ranges-apply: [THROW_ID_01] inputs missing!");if(typeof r!="string")throw new TypeError(`ranges-apply: [THROW_ID_02] first input argument must be a string! Currently it's: ${typeof r}, equal to: ${JSON.stringify(r,null,4)}`);if(t&&!Array.isArray(t))throw new TypeError(`ranges-apply: [THROW_ID_03] second input argument must be an array (or null)! Currently it's: ${typeof t}, equal to: ${JSON.stringify(t,null,4)}`);if(o&&typeof o!="function")throw new TypeError(`ranges-apply: [THROW_ID_04] the third input argument must be a function (or falsey)! Currently it's: ${typeof o}, equal to: ${JSON.stringify(o,null,4)}`);if(!(t!=null&&t.filter(u=>u).length))return r;let a;Array.isArray(t)&&Number.isInteger(t[0])&&Number.isInteger(t[1])?a=[Array.from(t)]:a=Array.from(t);let i=a.length,l=0;a.filter(u=>u).forEach((u,f)=>{if(o&&(s=Math.floor(l/i*10),s!==c&&(c=s,o(s))),!Array.isArray(u))throw new TypeError(`ranges-apply: [THROW_ID_05] ranges array, second input arg., has ${f}th element not an array: ${JSON.stringify(u,null,4)}, which is ${typeof u}`);if(!Number.isInteger(u[0])){if(!Number.isInteger(+u[0])||+u[0]<0)throw new TypeError(`ranges-apply: [THROW_ID_06] ranges array, second input arg. has ${f}th element, array ${JSON.stringify(u,null,0)}. Its first element is not an integer, string index, but ${typeof u[0]}, equal to: ${JSON.stringify(u[0],null,4)}.`);a[f][0]=+a[f][0]}if(!Number.isInteger(u[1])){if(!Number.isInteger(+u[1])||+u[1]<0)throw new TypeError(`ranges-apply: [THROW_ID_07] ranges array, second input arg. has ${f}th element, array ${JSON.stringify(u,null,0)}. Its second element is not an integer, string index, but ${typeof u[1]}, equal to: ${JSON.stringify(u[1],null,4)}.`);a[f][1]=+a[f][1]}l+=1});let n=T(a,{progressFn:u=>{o&&(s=10+Math.floor(u/10),s!==c&&(c=s,o(s)))}});v(n);let e=n.length;if(e>0){let u=r.slice(n[e-1][1]);r=n.reduce((f,p,d,g)=>{o&&(s=20+Math.floor(d/e*80),s!==c&&(c=s,o(s)));let b=d===0?0:g[d-1][1],F=g[d][0];return`${f}${r.slice(b,F)}${g[d][2]||""}`},""),r+=u}return r}var C=P(R(),1);var pe=(0,C.default)();function K(r){if(r==null||typeof r!="object")return!1;let t=Object.getPrototypeOf(r);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null?!1:!(Symbol.iterator in r)&&!(Symbol.toStringTag in r)}function G(r){return typeof r=="string"}function x(r,t){return K(r)&&G(t)&&t in r}var N="6.0.19";var X=N,I={wildcard:"*",dedupePlease:!0};function Y(r,t){if(!Array.isArray(r))return r;if(!r.length)return{};let o=m(m({},I),t),s=o.dedupePlease?[...new Set(r)]:Array.from(r),c={};for(let i=0,l=s.length;i<l;i++){let n=s[i].match(/\d+/gm);if(!n)c[s[i]]={count:1};else{let e=s[i].replace(/\d+/gm,o.wildcard);x(c,e)?(n.forEach((u,f)=>{c[e].elementsWhichWeCanReplaceWithWildcards[f]&&u!==c[e].elementsWhichWeCanReplaceWithWildcards[f]&&(c[e].elementsWhichWeCanReplaceWithWildcards[f]=!1)}),c[e].count+=1):c[e]={count:1,elementsWhichWeCanReplaceWithWildcards:Array.from(n)}}}let a={};return Object.keys(c).forEach(i=>{let l=i;if(Array.isArray(c[i].elementsWhichWeCanReplaceWithWildcards)&&c[i].elementsWhichWeCanReplaceWithWildcards.some(n=>n!==!1)){let n=[],e=0;for(let u=0;u<c[i].elementsWhichWeCanReplaceWithWildcards.length;u++)e=l.indexOf(`${o.wildcard||""}`,e+(o.wildcard||"").length),c[i].elementsWhichWeCanReplaceWithWildcards[u]!==!1&&n.push([e,e+(o.wildcard||"").length,c[i].elementsWhichWeCanReplaceWithWildcards[u]]);l=D(l,n)}a[l]=c[i].count}),a}return L(ee);})();
/**
* @name ranges-sort
* @fileoverview Sort string index ranges
* @version 6.0.13
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-sort/}
*/
/**
* @name ranges-merge
* @fileoverview Merge and sort string index ranges
* @version 9.0.18
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-merge/}
*/
/**
* @name ranges-apply
* @fileoverview Take an array of string index ranges, delete/replace the string according to them
* @version 7.0.19
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/ranges-apply/}
*/
/**
* @name codsen-utils
* @fileoverview Various utility functions
* @version 1.6.7
* @author Roy Revelt, Codsen Ltd
* @license MIT
* {@link https://codsen.com/os/codsen-utils/}
*/