aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/js-small-apps/budget-app/lib/utils/currency.js
blob: 04d3ad00ea6a84dac83c4c04c6d5325a178638e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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;