liczbyslowniepopolsku
Version:
Nowoczesna biblioteka do zamiany liczb na zapis słowny w języku polskim
2 lines (1 loc) • 2.63 kB
JavaScript
(function(o,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o.LiczbySlownie={}))})(this,function(o){"use strict";var j=Object.defineProperty;var g=(o,s,d)=>s in o?j(o,s,{enumerable:!0,configurable:!0,writable:!0,value:d}):o[s]=d;var h=(o,s,d)=>g(o,typeof s!="symbol"?s+"":s,d);const s={odmiana:{jeden:"",dwa:"y",piec:""},separator:" ",groszeSeparator:" i "},d=["","jeden","dwa","trzy","cztery","pięć","sześć","siedem","osiem","dziewięć"],l=["dziesięć","jedenaście","dwanaście","trzynaście","czternaście","piętnaście","szesnaście","siedemnaście","osiemnaście","dziewiętnaście"],p=["","","dwadzieścia","trzydzieści","czterdzieści","pięćdziesiąt","sześćdziesiąt","siedemdziesiąt","osiemdziesiąt","dziewięćdziesiąt"],m=["","sto","dwieście","trzysta","czterysta","pięćset","sześćset","siedemset","osiemset","dziewięćset"];class w{constructor(i={}){h(this,"konfiguracja");this.konfiguracja={...s,...i}}liczbySlownie(i){if(i===0)return"zero";const c=i<0;let e=Math.abs(i);const t=[];if(e>=1e9){const r=Math.floor(e/1e9),a=this.przetworzGrupe(r,"miliard","miliardy","miliardów");a&&t.push(a),e%=1e9}if(e>=1e6){const r=Math.floor(e/1e6),a=this.przetworzGrupe(r,"milion","miliony","milionów");a&&t.push(a),e%=1e6}if(e>=1e3){const r=Math.floor(e/1e3),a=this.przetworzGrupe(r,"tysiąc","tysiące","tysięcy");a&&t.push(a),e%=1e3}if(e>0){const r=this.przetworzGrupe(e,"","","");r&&t.push(r)}let n=t.filter(Boolean).join(this.konfiguracja.separator);return c&&(n="minus"+(n?this.konfiguracja.separator+n:"")),n}kwotaSlownie(i){const c=i<0,e=Math.floor(Math.abs(i)),t=Math.round((Math.abs(i)-e)*100);let n="";return c&&(n+="minus "),n+=this.liczbySlownie(e)+" "+this.odmianaZlotych(e),t>0&&(n+=this.konfiguracja.groszeSeparator+this.liczbySlownie(t)+" "+this.odmianaGroszy(t)),n}przetworzGrupe(i,c,e,t){if(i===0)return"";const n=Math.floor(i/100),r=Math.floor(i%100/10),a=i%10,f=i%100,z=[];n>0&&z.push(m[n]),f>=10&&f<=19?z.push(l[f-10]):(r>0&&z.push(p[r]),(a>0||i===1&&c==="tysiąc")&&z.push(d[a]));const y=z.filter(Boolean).join(this.konfiguracja.separator),u=this.odmianaLiczby(i,c,e,t);return u?!y||i===1&&c==="tysiąc"?u:y+this.konfiguracja.separator+u:y}odmianaLiczby(i,c,e,t){return!c&&!e&&!t?"":i===1?c:i%100>=12&&i%100<=14?t:i%10>=2&&i%10<=4?e:t}odmianaZlotych(i){return this.odmianaLiczby(i,"złoty","złote","złotych")}odmianaGroszy(i){return this.odmianaLiczby(i,"grosz","grosze","groszy")}}o.LiczbySlownie=w,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});