UNPKG

string-remove-thousand-separators

Version:

Detects and removes thousand separators (dot/comma/quote/space) from string-type digits

13 lines (11 loc) 1.89 kB
/** * @name string-remove-thousand-separators * @fileoverview Detects and removes thousand separators (dot/comma/quote/space) from string-type digits * @version 7.1.0 * @author Roy Revelt * @license MIT * {@link https://codsen.com/os/string-remove-thousand-separators/} */ import{rApply as d}from"ranges-apply";import{Ranges as c}from"ranges-push";import{trim as $}from"lodash-es";var a="7.1.0";var v=a,f={removeThousandSeparatorsFromNumbers:!0,padSingleDecimalPlaceNumbers:!0,forceUKStyle:!1};function S(s,i){let o=!0,u=[".",",","'"," "],l;if(typeof s!="string")throw new TypeError(`string-remove-thousand-separators/remSep(): [THROW_ID_01] Input must be string! Currently it's: ${typeof s}, equal to: ${JSON.stringify(s,null,4)}`);if(i&&typeof i!="object")throw new TypeError(`string-remove-thousand-separators/remSep(): [THROW_ID_02] Options object must be a plain object! Currently it's: ${typeof i}, equal to: ${JSON.stringify(i,null,4)}`);let n={...f,...i},r=$(s.trim(),'"');if(r==="")return r;if(+s>0&&+s<1)return s;let t=new c;for(let e=0,m=r.length;e<m;e++){if(n.removeThousandSeparatorsFromNumbers&&r[e].trim()===""&&t.add(e,e+1),n.removeThousandSeparatorsFromNumbers&&r[e]==="'"&&(t.add(e,e+1),r[e+1]==="'")){o=!1;break}if(u.includes(r[e])){if(r[e+1]!==void 0&&/^\d$/.test(r[e+1]))if(r[e+2]!==void 0)if(/^\d$/.test(r[e+2]))if(r[e+3]!==void 0)if(/^\d$/.test(r[e+3])){if(r[e+4]!==void 0&&/^\d$/.test(r[e+4])){o=!1;break}else if(n.removeThousandSeparatorsFromNumbers&&t.add(e,e+1),!l)l=r[e];else if(r[e]!==l){o=!1;break}}else{o=!1;break}else n.removeThousandSeparatorsFromNumbers&&n.forceUKStyle&&r[e]===","&&t.add(e,e+1,".");else{o=!1;break}else n.forceUKStyle&&r[e]===","&&t.add(e,e+1,"."),n.padSingleDecimalPlaceNumbers&&t.add(e+2,e+2,"0")}else if(!/^\d$/.test(r[e])){o=!1;break}}return o&&t.current()?d(r,t.current()):r}export{f as defaults,S as remSep,v as version};