match.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import { buildMatchFn } from "../../_lib/buildMatchFn.js";
  2. import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.js";
  3. const matchOrdinalNumberPattern = /^(\d+)(è|r|n|r|t)?/i;
  4. const parseOrdinalNumberPattern = /\d+/i;
  5. const matchEraPatterns = {
  6. narrow: /^(aC|dC)/i,
  7. abbreviated: /^(a. de C.|d. de C.)/i,
  8. wide: /^(abans de Crist|despr[eé]s de Crist)/i,
  9. };
  10. const parseEraPatterns = {
  11. narrow: [/^aC/i, /^dC/i],
  12. abbreviated: [/^(a. de C.)/i, /^(d. de C.)/i],
  13. wide: [/^(abans de Crist)/i, /^(despr[eé]s de Crist)/i],
  14. };
  15. const matchQuarterPatterns = {
  16. narrow: /^[1234]/i,
  17. abbreviated: /^T[1234]/i,
  18. wide: /^[1234](è|r|n|r|t)? trimestre/i,
  19. };
  20. const parseQuarterPatterns = {
  21. any: [/1/i, /2/i, /3/i, /4/i],
  22. };
  23. const matchMonthPatterns = {
  24. narrow: /^(GN|FB|MÇ|AB|MG|JN|JL|AG|ST|OC|NV|DS)/i,
  25. abbreviated:
  26. /^(gen.|febr.|març|abr.|maig|juny|jul.|ag.|set.|oct.|nov.|des.)/i,
  27. wide: /^(gener|febrer|març|abril|maig|juny|juliol|agost|setembre|octubre|novembre|desembre)/i,
  28. };
  29. const parseMonthPatterns = {
  30. narrow: [
  31. /^GN/i,
  32. /^FB/i,
  33. /^MÇ/i,
  34. /^AB/i,
  35. /^MG/i,
  36. /^JN/i,
  37. /^JL/i,
  38. /^AG/i,
  39. /^ST/i,
  40. /^OC/i,
  41. /^NV/i,
  42. /^DS/i,
  43. ],
  44. abbreviated: [
  45. /^gen./i,
  46. /^febr./i,
  47. /^març/i,
  48. /^abr./i,
  49. /^maig/i,
  50. /^juny/i,
  51. /^jul./i,
  52. /^ag./i,
  53. /^set./i,
  54. /^oct./i,
  55. /^nov./i,
  56. /^des./i,
  57. ],
  58. wide: [
  59. /^gener/i,
  60. /^febrer/i,
  61. /^març/i,
  62. /^abril/i,
  63. /^maig/i,
  64. /^juny/i,
  65. /^juliol/i,
  66. /^agost/i,
  67. /^setembre/i,
  68. /^octubre/i,
  69. /^novembre/i,
  70. /^desembre/i,
  71. ],
  72. };
  73. const matchDayPatterns = {
  74. narrow: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
  75. short: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
  76. abbreviated: /^(dg\.|dl\.|dt\.|dm\.|dj\.|dv\.|ds\.)/i,
  77. wide: /^(diumenge|dilluns|dimarts|dimecres|dijous|divendres|dissabte)/i,
  78. };
  79. const parseDayPatterns = {
  80. narrow: [/^dg./i, /^dl./i, /^dt./i, /^dm./i, /^dj./i, /^dv./i, /^ds./i],
  81. abbreviated: [/^dg./i, /^dl./i, /^dt./i, /^dm./i, /^dj./i, /^dv./i, /^ds./i],
  82. wide: [
  83. /^diumenge/i,
  84. /^dilluns/i,
  85. /^dimarts/i,
  86. /^dimecres/i,
  87. /^dijous/i,
  88. /^divendres/i,
  89. /^disssabte/i,
  90. ],
  91. };
  92. const matchDayPeriodPatterns = {
  93. narrow: /^(a|p|mn|md|(del|de la) (matí|tarda|vespre|nit))/i,
  94. abbreviated:
  95. /^([ap]\.?\s?m\.?|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i,
  96. wide: /^(ante meridiem|post meridiem|mitjanit|migdia|(del|de la) (matí|tarda|vespre|nit))/i,
  97. };
  98. const parseDayPeriodPatterns = {
  99. any: {
  100. am: /^a/i,
  101. pm: /^p/i,
  102. midnight: /^mitjanit/i,
  103. noon: /^migdia/i,
  104. morning: /matí/i,
  105. afternoon: /tarda/i,
  106. evening: /vespre/i,
  107. night: /nit/i,
  108. },
  109. };
  110. export const match = {
  111. ordinalNumber: buildMatchPatternFn({
  112. matchPattern: matchOrdinalNumberPattern,
  113. parsePattern: parseOrdinalNumberPattern,
  114. valueCallback: (value) => parseInt(value, 10),
  115. }),
  116. era: buildMatchFn({
  117. matchPatterns: matchEraPatterns,
  118. defaultMatchWidth: "wide",
  119. parsePatterns: parseEraPatterns,
  120. defaultParseWidth: "wide",
  121. }),
  122. quarter: buildMatchFn({
  123. matchPatterns: matchQuarterPatterns,
  124. defaultMatchWidth: "wide",
  125. parsePatterns: parseQuarterPatterns,
  126. defaultParseWidth: "any",
  127. valueCallback: (index) => index + 1,
  128. }),
  129. month: buildMatchFn({
  130. matchPatterns: matchMonthPatterns,
  131. defaultMatchWidth: "wide",
  132. parsePatterns: parseMonthPatterns,
  133. defaultParseWidth: "wide",
  134. }),
  135. day: buildMatchFn({
  136. matchPatterns: matchDayPatterns,
  137. defaultMatchWidth: "wide",
  138. parsePatterns: parseDayPatterns,
  139. defaultParseWidth: "wide",
  140. }),
  141. dayPeriod: buildMatchFn({
  142. matchPatterns: matchDayPeriodPatterns,
  143. defaultMatchWidth: "wide",
  144. parsePatterns: parseDayPeriodPatterns,
  145. defaultParseWidth: "any",
  146. }),
  147. };