match.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. import { buildMatchFn } from "../../_lib/buildMatchFn.js";
  2. import { buildMatchPatternFn } from "../../_lib/buildMatchPatternFn.js";
  3. const matchOrdinalNumberPattern = /^(\d+)(-?(ci|inci|nci|uncu|üncü|ncı))?/i;
  4. const parseOrdinalNumberPattern = /\d+/i;
  5. const matchEraPatterns = {
  6. narrow: /^(b|a)$/i,
  7. abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)$/i,
  8. wide: /^(bizim eradan əvvəl|bizim era)$/i,
  9. };
  10. const parseEraPatterns = {
  11. any: [/^b$/i, /^(a|c)$/i],
  12. };
  13. const matchQuarterPatterns = {
  14. narrow: /^[1234]$/i,
  15. abbreviated: /^K[1234]$/i,
  16. wide: /^[1234](ci)? kvartal$/i,
  17. };
  18. const parseQuarterPatterns = {
  19. any: [/1/i, /2/i, /3/i, /4/i],
  20. };
  21. const matchMonthPatterns = {
  22. narrow: /^[(?-i)yfmaisond]$/i,
  23. abbreviated: /^(Yan|Fev|Mar|Apr|May|İyun|İyul|Avq|Sen|Okt|Noy|Dek)$/i,
  24. wide: /^(Yanvar|Fevral|Mart|Aprel|May|İyun|İyul|Avgust|Sentyabr|Oktyabr|Noyabr|Dekabr)$/i,
  25. };
  26. const parseMonthPatterns = {
  27. narrow: [
  28. /^[(?-i)y]$/i,
  29. /^[(?-i)f]$/i,
  30. /^[(?-i)m]$/i,
  31. /^[(?-i)a]$/i,
  32. /^[(?-i)m]$/i,
  33. /^[(?-i)i]$/i,
  34. /^[(?-i)i]$/i,
  35. /^[(?-i)a]$/i,
  36. /^[(?-i)s]$/i,
  37. /^[(?-i)o]$/i,
  38. /^[(?-i)n]$/i,
  39. /^[(?-i)d]$/i,
  40. ],
  41. abbreviated: [
  42. /^Yan$/i,
  43. /^Fev$/i,
  44. /^Mar$/i,
  45. /^Apr$/i,
  46. /^May$/i,
  47. /^İyun$/i,
  48. /^İyul$/i,
  49. /^Avg$/i,
  50. /^Sen$/i,
  51. /^Okt$/i,
  52. /^Noy$/i,
  53. /^Dek$/i,
  54. ],
  55. wide: [
  56. /^Yanvar$/i,
  57. /^Fevral$/i,
  58. /^Mart$/i,
  59. /^Aprel$/i,
  60. /^May$/i,
  61. /^İyun$/i,
  62. /^İyul$/i,
  63. /^Avgust$/i,
  64. /^Sentyabr$/i,
  65. /^Oktyabr$/i,
  66. /^Noyabr$/i,
  67. /^Dekabr$/i,
  68. ],
  69. };
  70. const matchDayPatterns = {
  71. narrow: /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,
  72. short: /^(B\.|B\.e|Ç\.a|Ç\.|C\.a|C\.|Ş\.)$/i,
  73. abbreviated: /^(Baz\.e|Çər|Çər\.a|Cüm|Cüm\.a|Şə)$/i,
  74. wide: /^(Bazar|Bazar ertəsi|Çərşənbə axşamı|Çərşənbə|Cümə axşamı|Cümə|Şənbə)$/i,
  75. };
  76. const parseDayPatterns = {
  77. narrow: [
  78. /^B\.$/i,
  79. /^B\.e$/i,
  80. /^Ç\.a$/i,
  81. /^Ç\.$/i,
  82. /^C\.a$/i,
  83. /^C\.$/i,
  84. /^Ş\.$/i,
  85. ],
  86. abbreviated: [
  87. /^Baz$/i,
  88. /^Baz\.e$/i,
  89. /^Çər\.a$/i,
  90. /^Çər$/i,
  91. /^Cüm\.a$/i,
  92. /^Cüm$/i,
  93. /^Şə$/i,
  94. ],
  95. wide: [
  96. /^Bazar$/i,
  97. /^Bazar ertəsi$/i,
  98. /^Çərşənbə axşamı$/i,
  99. /^Çərşənbə$/i,
  100. /^Cümə axşamı$/i,
  101. /^Cümə$/i,
  102. /^Şənbə$/i,
  103. ],
  104. any: [
  105. /^B\.$/i,
  106. /^B\.e$/i,
  107. /^Ç\.a$/i,
  108. /^Ç\.$/i,
  109. /^C\.a$/i,
  110. /^C\.$/i,
  111. /^Ş\.$/i,
  112. ],
  113. };
  114. const matchDayPeriodPatterns = {
  115. narrow: /^(a|p|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,
  116. any: /^(am|pm|a\.m\.|p\.m\.|AM|PM|gecəyarı|gün|səhər|gündüz|axşam|gecə)$/i,
  117. };
  118. const parseDayPeriodPatterns = {
  119. any: {
  120. am: /^a$/i,
  121. pm: /^p$/i,
  122. midnight: /^gecəyarı$/i,
  123. noon: /^gün$/i,
  124. morning: /səhər$/i,
  125. afternoon: /gündüz$/i,
  126. evening: /axşam$/i,
  127. night: /gecə$/i,
  128. },
  129. };
  130. export const match = {
  131. ordinalNumber: buildMatchPatternFn({
  132. matchPattern: matchOrdinalNumberPattern,
  133. parsePattern: parseOrdinalNumberPattern,
  134. valueCallback: (value) => parseInt(value, 10),
  135. }),
  136. era: buildMatchFn({
  137. matchPatterns: matchEraPatterns,
  138. defaultMatchWidth: "wide",
  139. parsePatterns: parseEraPatterns,
  140. defaultParseWidth: "any",
  141. }),
  142. quarter: buildMatchFn({
  143. matchPatterns: matchQuarterPatterns,
  144. defaultMatchWidth: "wide",
  145. parsePatterns: parseQuarterPatterns,
  146. defaultParseWidth: "any",
  147. valueCallback: (index) => index + 1,
  148. }),
  149. month: buildMatchFn({
  150. matchPatterns: matchMonthPatterns,
  151. defaultMatchWidth: "wide",
  152. parsePatterns: parseMonthPatterns,
  153. defaultParseWidth: "narrow",
  154. }),
  155. day: buildMatchFn({
  156. matchPatterns: matchDayPatterns,
  157. defaultMatchWidth: "wide",
  158. parsePatterns: parseDayPatterns,
  159. defaultParseWidth: "any",
  160. }),
  161. dayPeriod: buildMatchFn({
  162. matchPatterns: matchDayPeriodPatterns,
  163. defaultMatchWidth: "any",
  164. parsePatterns: parseDayPeriodPatterns,
  165. defaultParseWidth: "any",
  166. }),
  167. };