UNPKG

parse-localized-number

Version:

An npm package for number formatting and parsing based on different browser region settings.

19 lines (18 loc) 1.04 kB
const m = (r) => { const o = new Intl.NumberFormat(r).formatToParts(12345.6), n = [ ...new Intl.NumberFormat(r, { useGrouping: !1 }).format(9876543210) ].reverse(), t = new Map(n.map((e, a) => [e, a])), s = o.find((e) => e.type === "group")?.value || "", p = o.find((e) => e.type === "decimal")?.value || "", u = new RegExp(`[${s.replace(/\s/g, "\\s").replace(/\./g, "\\.")}]`, "g"), c = new RegExp(`[${p.replace(/\./g, "\\.")}]`), l = new RegExp(`[${n.join("")}]`, "g"), i = (e) => t.get(e); return { parse: (e) => (e = e.trim().replace(u, "").replace(c, ".").replace(l, (a) => i(a)), e ? +e : NaN) }; }, g = (r, o) => { if (typeof r != "number" && typeof r != "string") return "The result is not a number"; const n = o || (typeof window < "u" ? window.navigator.language : "en-US"); let t; return typeof r == "string" && (t = m(n).parse(r)), typeof r == "number" && (t = Number(r)), Number.isNaN(t) ? "The result is not a number" : t.toLocaleString(n); }; export { m as createNumberParser, g as formatNumber };