📄 localize.js
/home/palash/git/site/node_modules/date-fns/locale/bn/_lib/localize.js
Language: js â€ĸ Lines: 255
import { buildLocalizeFn } from "../../_lib/buildLocalizeFn.js";

const numberValues = {
  locale: {
    1: "ā§§",
    2: "⧍",
    3: "ā§Š",
    4: "ā§Ē",
    5: "ā§Ģ",
    6: "ā§Ŧ",
    7: "ā§­",
    8: "ā§Ž",
    9: "⧝",
    0: "ā§Ļ",
  },
  number: {
    "ā§§": "1",
    "⧍": "2",
    "ā§Š": "3",
    "ā§Ē": "4",
    "ā§Ģ": "5",
    "ā§Ŧ": "6",
    "ā§­": "7",
    "ā§Ž": "8",
    "⧝": "9",
    "ā§Ļ": "0",
  },
};

const eraValues = {
  narrow: ["āĻ–ā§āϰāĻŋāσāĻĒā§‚āσ", "āĻ–ā§āϰāĻŋāσ"],
  abbreviated: ["āĻ–ā§āϰāĻŋāσāĻĒā§‚āĻ°ā§āĻŦ", "āĻ–ā§āϰāĻŋāσ"],
  wide: ["āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻĒā§‚āĻ°ā§āĻŦ", "āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻžāĻŦā§āĻĻ"],
};

const quarterValues = {
  narrow: ["ā§§", "⧍", "ā§Š", "ā§Ē"],
  abbreviated: ["ā§§āĻ¤ā§āϰ⧈", "⧍āĻ¤ā§āϰ⧈", "ā§ŠāĻ¤ā§āϰ⧈", "ā§ĒāĻ¤ā§āϰ⧈"],
  wide: ["ā§§āĻŽ āĻ¤ā§āϰ⧈āĻŽāĻžāϏāĻŋāĻ•", "⧍⧟ āĻ¤ā§āϰ⧈āĻŽāĻžāϏāĻŋāĻ•", "ā§Šā§Ÿ āĻ¤ā§āϰ⧈āĻŽāĻžāϏāĻŋāĻ•", "ā§ĒāĻ°ā§āĻĨ āĻ¤ā§āϰ⧈āĻŽāĻžāϏāĻŋāĻ•"],
};

const monthValues = {
  narrow: [
    "āϜāĻžāύ⧁",
    "āĻĢ⧇āĻŦā§āϰ⧁",
    "āĻŽāĻžāĻ°ā§āϚ",
    "āĻāĻĒā§āϰāĻŋāϞ",
    "āĻŽā§‡",
    "āϜ⧁āύ",
    "āϜ⧁āϞāĻžāχ",
    "āφāĻ—āĻ¸ā§āϟ",
    "āϏ⧇āĻĒā§āϟ",
    "āĻ…āĻ•ā§āĻŸā§‹",
    "āύāϭ⧇",
    "āĻĄāĻŋāϏ⧇",
  ],

  abbreviated: [
    "āϜāĻžāύ⧁",
    "āĻĢ⧇āĻŦā§āϰ⧁",
    "āĻŽāĻžāĻ°ā§āϚ",
    "āĻāĻĒā§āϰāĻŋāϞ",
    "āĻŽā§‡",
    "āϜ⧁āύ",
    "āϜ⧁āϞāĻžāχ",
    "āφāĻ—āĻ¸ā§āϟ",
    "āϏ⧇āĻĒā§āϟ",
    "āĻ…āĻ•ā§āĻŸā§‹",
    "āύāϭ⧇",
    "āĻĄāĻŋāϏ⧇",
  ],

  wide: [
    "āϜāĻžāύ⧁⧟āĻžāϰāĻŋ",
    "āĻĢ⧇āĻŦā§āϰ⧁⧟āĻžāϰāĻŋ",
    "āĻŽāĻžāĻ°ā§āϚ",
    "āĻāĻĒā§āϰāĻŋāϞ",
    "āĻŽā§‡",
    "āϜ⧁āύ",
    "āϜ⧁āϞāĻžāχ",
    "āφāĻ—āĻ¸ā§āϟ",
    "āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ",
    "āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ",
    "āύāϭ⧇āĻŽā§āĻŦāϰ",
    "āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ",
  ],
};

const dayValues = {
  narrow: ["āϰ", "āϏ⧋", "āĻŽ", "āĻŦ⧁", "āĻŦ⧃", "āĻļ⧁", "āĻļ"],
  short: ["āϰāĻŦāĻŋ", "āϏ⧋āĻŽ", "āĻŽāĻ™ā§āĻ—āϞ", "āĻŦ⧁āϧ", "āĻŦ⧃āĻš", "āĻļ⧁āĻ•ā§āϰ", "āĻļāύāĻŋ"],
  abbreviated: ["āϰāĻŦāĻŋ", "āϏ⧋āĻŽ", "āĻŽāĻ™ā§āĻ—āϞ", "āĻŦ⧁āϧ", "āĻŦ⧃āĻš", "āĻļ⧁āĻ•ā§āϰ", "āĻļāύāĻŋ"],
  wide: [
    "āϰāĻŦāĻŋāĻŦāĻžāϰ",
    "āϏ⧋āĻŽāĻŦāĻžāϰ",
    "āĻŽāĻ™ā§āĻ—āϞāĻŦāĻžāϰ",
    "āĻŦ⧁āϧāĻŦāĻžāϰ",
    "āĻŦ⧃āĻšāĻ¸ā§āĻĒāϤāĻŋāĻŦāĻžāϰ ",
    "āĻļ⧁āĻ•ā§āϰāĻŦāĻžāϰ",
    "āĻļāύāĻŋāĻŦāĻžāϰ",
  ],
};

const dayPeriodValues = {
  narrow: {
    am: "āĻĒā§‚",
    pm: "āĻ…āĻĒ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
  abbreviated: {
    am: "āĻĒā§‚āĻ°ā§āĻŦāĻžāĻšā§āύ",
    pm: "āĻ…āĻĒāϰāĻžāĻšā§āύ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
  wide: {
    am: "āĻĒā§‚āĻ°ā§āĻŦāĻžāĻšā§āύ",
    pm: "āĻ…āĻĒāϰāĻžāĻšā§āύ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
};

const formattingDayPeriodValues = {
  narrow: {
    am: "āĻĒā§‚",
    pm: "āĻ…āĻĒ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
  abbreviated: {
    am: "āĻĒā§‚āĻ°ā§āĻŦāĻžāĻšā§āύ",
    pm: "āĻ…āĻĒāϰāĻžāĻšā§āύ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
  wide: {
    am: "āĻĒā§‚āĻ°ā§āĻŦāĻžāĻšā§āύ",
    pm: "āĻ…āĻĒāϰāĻžāĻšā§āύ",
    midnight: "āĻŽāĻ§ā§āϝāϰāĻžāϤ",
    noon: "āĻŽāĻ§ā§āϝāĻžāĻšā§āύ",
    morning: "āϏāĻ•āĻžāϞ",
    afternoon: "āĻŦāĻŋāĻ•āĻžāϞ",
    evening: "āϏāĻ¨ā§āĻ§ā§āϝāĻž",
    night: "āϰāĻžāϤ",
  },
};

function dateOrdinalNumber(number, localeNumber) {
  if (number > 18 && number <= 31) {
    return localeNumber + "āĻļ⧇";
  } else {
    switch (number) {
      case 1:
        return localeNumber + "āϞāĻž";
      case 2:
      case 3:
        return localeNumber + "āϰāĻž";
      case 4:
        return localeNumber + "āĻ āĻž";
      default:
        return localeNumber + "āχ";
    }
  }
}

const ordinalNumber = (dirtyNumber, options) => {
  const number = Number(dirtyNumber);
  const localeNumber = numberToLocale(number);
  const unit = options?.unit;

  if (unit === "date") {
    return dateOrdinalNumber(number, localeNumber);
  }
  if (number > 10 || number === 0) return localeNumber + "āϤāĻŽ";

  const rem10 = number % 10;
  switch (rem10) {
    case 2:
    case 3:
      return localeNumber + "⧟";
    case 4:
      return localeNumber + "āĻ°ā§āĻĨ";
    case 6:
      return localeNumber + "āĻˇā§āĻ ";
    default:
      return localeNumber + "āĻŽ";
  }
};

// function localeToNumber(locale: string): number {
//   const enNumber = locale.toString().replace(/[ā§§ā§¨ā§Šā§Ēā§Ģā§Ŧā§­ā§Žā§¯ā§Ļ]/g, function (match) {
//     return numberValues.number[match as keyof typeof numberValues.number]
//   })
//   return Number(enNumber)
// }

export function numberToLocale(enNumber) {
  return enNumber.toString().replace(/\d/g, function (match) {
    return numberValues.locale[match];
  });
}

export const localize = {
  ordinalNumber,

  era: buildLocalizeFn({
    values: eraValues,
    defaultWidth: "wide",
  }),

  quarter: buildLocalizeFn({
    values: quarterValues,
    defaultWidth: "wide",
    argumentCallback: (quarter) => quarter - 1,
  }),

  month: buildLocalizeFn({
    values: monthValues,
    defaultWidth: "wide",
  }),

  day: buildLocalizeFn({
    values: dayValues,
    defaultWidth: "wide",
  }),

  dayPeriod: buildLocalizeFn({
    values: dayPeriodValues,
    defaultWidth: "wide",
    formattingValues: formattingDayPeriodValues,
    defaultFormattingWidth: "wide",
  }),
};