aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/js-small-apps/budget-app/lib/utils
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-02-20 16:11:50 +0100
committerArmand Philippot <git@armandphilippot.com>2022-02-20 16:15:08 +0100
commit73a5c7fae9ffbe9ada721148c8c454a643aceebe (patch)
treec8fad013ed9b5dd589add87f8d45cf02bbfc6e91 /public/projects/js-small-apps/budget-app/lib/utils
parentb01239fbdcc5bbc5921f73ec0e8fee7bedd5c8e8 (diff)
chore!: restructure repo
I separated public files from the config/dev files. It improves repo readability. I also moved dotenv helper to public/inc directory and extract the Matomo tracker in the same directory.
Diffstat (limited to 'public/projects/js-small-apps/budget-app/lib/utils')
-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;