aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/js-small-apps/budget-app/lib/utils/currency.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/projects/js-small-apps/budget-app/lib/utils/currency.js')
-rw-r--r--public/projects/js-small-apps/budget-app/lib/utils/currency.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/public/projects/js-small-apps/budget-app/lib/utils/currency.js b/public/projects/js-small-apps/budget-app/lib/utils/currency.js
new file mode 100644
index 0000000..04d3ad0
--- /dev/null
+++ b/public/projects/js-small-apps/budget-app/lib/utils/currency.js
@@ -0,0 +1,47 @@
+/**
+ * Convert a number to fr_FR locale.
+ * @param {Number} number A number to format.
+ * @returns A number formatted with fr_FR locale.
+ */
+const getCurrencyFR = (number) => {
+ const formatted =
+ Number.parseFloat(number)
+ .toFixed(2)
+ .replace(".", ",")
+ .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 ") + " €";
+ return formatted;
+};
+
+/**
+ * Convert a number to en_US locale.
+ * @param {Number} number A number to format.
+ * @returns A number formatted with en_US locale.
+ */
+const getCurrencyUS = (number) => {
+ const formatted =
+ "$" +
+ Number.parseFloat(number)
+ .toFixed(2)
+ .replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
+ return formatted;
+};
+
+/**
+ * Get a number formatted based on a locale.
+ * @param {Number} number A number to format.
+ * @param {String} format A language code.
+ * @returns A formatted number.
+ */
+const getCurrencyFormat = (number, format) => {
+ switch (format) {
+ case "fr-FR":
+ return getCurrencyFR(number);
+ case "en-US":
+ return getCurrencyUS(number);
+ default:
+ console.log("Not supported!");
+ break;
+ }
+};
+
+export default getCurrencyFormat;