match.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import { buildMatchFn } from "../../_lib/buildMatchFn.js";
  2. import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.js";
  3. import { localeToNumber } from "./localize.js";
  4. const matchOrdinalNumberPattern = /^[०१२३४५६७८९]+/i;
  5. const parseOrdinalNumberPattern = /^[०१२३४५६७८९]+/i;
  6. const matchEraPatterns = {
  7. narrow: /^(ईसा-पूर्व|ईस्वी)/i,
  8. abbreviated: /^(ईसा\.?\s?पूर्व\.?|ईसा\.?)/i,
  9. wide: /^(ईसा-पूर्व|ईसवी पूर्व|ईसवी सन|ईसवी)/i,
  10. };
  11. const parseEraPatterns = {
  12. any: [/^b/i, /^(a|c)/i],
  13. };
  14. const matchQuarterPatterns = {
  15. narrow: /^[1234]/i,
  16. abbreviated: /^ति[1234]/i,
  17. wide: /^[1234](पहली|दूसरी|तीसरी|चौथी)? तिमाही/i,
  18. };
  19. const parseQuarterPatterns = {
  20. any: [/1/i, /2/i, /3/i, /4/i],
  21. };
  22. const matchMonthPatterns = {
  23. // eslint-disable-next-line no-misleading-character-class
  24. narrow: /^[जफ़माअप्मईजूनजुअगसिअक्तनदि]/i,
  25. abbreviated: /^(जन|फ़र|मार्च|अप्|मई|जून|जुल|अग|सित|अक्तू|नव|दिस)/i,
  26. wide: /^(जनवरी|फ़रवरी|मार्च|अप्रैल|मई|जून|जुलाई|अगस्त|सितंबर|अक्तूबर|नवंबर|दिसंबर)/i,
  27. };
  28. const parseMonthPatterns = {
  29. narrow: [
  30. /^ज/i,
  31. /^फ़/i,
  32. /^मा/i,
  33. /^अप्/i,
  34. /^मई/i,
  35. /^जू/i,
  36. /^जु/i,
  37. /^अग/i,
  38. /^सि/i,
  39. /^अक्तू/i,
  40. /^न/i,
  41. /^दि/i,
  42. ],
  43. any: [
  44. /^जन/i,
  45. /^फ़/i,
  46. /^मा/i,
  47. /^अप्/i,
  48. /^मई/i,
  49. /^जू/i,
  50. /^जु/i,
  51. /^अग/i,
  52. /^सि/i,
  53. /^अक्तू/i,
  54. /^नव/i,
  55. /^दिस/i,
  56. ],
  57. };
  58. const matchDayPatterns = {
  59. // eslint-disable-next-line no-misleading-character-class
  60. narrow: /^[रविसोममंगलबुधगुरुशुक्रशनि]/i,
  61. short: /^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,
  62. abbreviated: /^(रवि|सोम|मंगल|बुध|गुरु|शुक्र|शनि)/i,
  63. wide: /^(रविवार|सोमवार|मंगलवार|बुधवार|गुरुवार|शुक्रवार|शनिवार)/i,
  64. };
  65. const parseDayPatterns = {
  66. narrow: [/^रवि/i, /^सोम/i, /^मंगल/i, /^बुध/i, /^गुरु/i, /^शुक्र/i, /^शनि/i],
  67. any: [/^रवि/i, /^सोम/i, /^मंगल/i, /^बुध/i, /^गुरु/i, /^शुक्र/i, /^शनि/i],
  68. };
  69. const matchDayPeriodPatterns = {
  70. narrow: /^(पू|अ|म|द.\?|सु|दो|शा|रा)/i,
  71. any: /^(पूर्वाह्न|अपराह्न|म|द.\?|सु|दो|शा|रा)/i,
  72. };
  73. const parseDayPeriodPatterns = {
  74. any: {
  75. am: /^पूर्वाह्न/i,
  76. pm: /^अपराह्न/i,
  77. midnight: /^मध्य/i,
  78. noon: /^दो/i,
  79. morning: /सु/i,
  80. afternoon: /दो/i,
  81. evening: /शा/i,
  82. night: /रा/i,
  83. },
  84. };
  85. export const match = {
  86. ordinalNumber: buildMatchPatternFn({
  87. matchPattern: matchOrdinalNumberPattern,
  88. parsePattern: parseOrdinalNumberPattern,
  89. valueCallback: localeToNumber,
  90. }),
  91. era: buildMatchFn({
  92. matchPatterns: matchEraPatterns,
  93. defaultMatchWidth: "wide",
  94. parsePatterns: parseEraPatterns,
  95. defaultParseWidth: "any",
  96. }),
  97. quarter: buildMatchFn({
  98. matchPatterns: matchQuarterPatterns,
  99. defaultMatchWidth: "wide",
  100. parsePatterns: parseQuarterPatterns,
  101. defaultParseWidth: "any",
  102. valueCallback: (index) => index + 1,
  103. }),
  104. month: buildMatchFn({
  105. matchPatterns: matchMonthPatterns,
  106. defaultMatchWidth: "wide",
  107. parsePatterns: parseMonthPatterns,
  108. defaultParseWidth: "any",
  109. }),
  110. day: buildMatchFn({
  111. matchPatterns: matchDayPatterns,
  112. defaultMatchWidth: "wide",
  113. parsePatterns: parseDayPatterns,
  114. defaultParseWidth: "any",
  115. }),
  116. dayPeriod: buildMatchFn({
  117. matchPatterns: matchDayPeriodPatterns,
  118. defaultMatchWidth: "any",
  119. parsePatterns: parseDayPeriodPatterns,
  120. defaultParseWidth: "any",
  121. }),
  122. };