UNPKG

liczbyslowniepopolsku

Version:

Nowoczesna biblioteka do zamiany liczb na zapis słowny w języku polskim

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