index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function declensionGroup(scheme, count) {
  7. if (count === 1 && scheme.one) {
  8. return scheme.one;
  9. }
  10. if (count >= 2 && count <= 4 && scheme.twoFour) {
  11. return scheme.twoFour;
  12. }
  13. // if count === null || count === 0 || count >= 5
  14. return scheme.other;
  15. }
  16. function declension(scheme, count, time) {
  17. var group = declensionGroup(scheme, count);
  18. var finalText = group[time];
  19. return finalText.replace('{{count}}', String(count));
  20. }
  21. function extractPreposition(token) {
  22. var result = ['lessThan', 'about', 'over', 'almost'].filter(function (preposition) {
  23. return !!token.match(new RegExp('^' + preposition));
  24. });
  25. return result[0];
  26. }
  27. function prefixPreposition(preposition) {
  28. var translation = '';
  29. if (preposition === 'almost') {
  30. translation = 'takmer';
  31. }
  32. if (preposition === 'about') {
  33. translation = 'približne';
  34. }
  35. return translation.length > 0 ? translation + ' ' : '';
  36. }
  37. function suffixPreposition(preposition) {
  38. var translation = '';
  39. if (preposition === 'lessThan') {
  40. translation = 'menej než';
  41. }
  42. if (preposition === 'over') {
  43. translation = 'viac než';
  44. }
  45. return translation.length > 0 ? translation + ' ' : '';
  46. }
  47. function lowercaseFirstLetter(string) {
  48. return string.charAt(0).toLowerCase() + string.slice(1);
  49. }
  50. var formatDistanceLocale = {
  51. xSeconds: {
  52. one: {
  53. present: 'sekunda',
  54. past: 'sekundou',
  55. future: 'sekundu'
  56. },
  57. twoFour: {
  58. present: '{{count}} sekundy',
  59. past: '{{count}} sekundami',
  60. future: '{{count}} sekundy'
  61. },
  62. other: {
  63. present: '{{count}} sekúnd',
  64. past: '{{count}} sekundami',
  65. future: '{{count}} sekúnd'
  66. }
  67. },
  68. halfAMinute: {
  69. other: {
  70. present: 'pol minúty',
  71. past: 'pol minútou',
  72. future: 'pol minúty'
  73. }
  74. },
  75. xMinutes: {
  76. one: {
  77. present: 'minúta',
  78. past: 'minútou',
  79. future: 'minútu'
  80. },
  81. twoFour: {
  82. present: '{{count}} minúty',
  83. past: '{{count}} minútami',
  84. future: '{{count}} minúty'
  85. },
  86. other: {
  87. present: '{{count}} minút',
  88. past: '{{count}} minútami',
  89. future: '{{count}} minút'
  90. }
  91. },
  92. xHours: {
  93. one: {
  94. present: 'hodina',
  95. past: 'hodinou',
  96. future: 'hodinu'
  97. },
  98. twoFour: {
  99. present: '{{count}} hodiny',
  100. past: '{{count}} hodinami',
  101. future: '{{count}} hodiny'
  102. },
  103. other: {
  104. present: '{{count}} hodín',
  105. past: '{{count}} hodinami',
  106. future: '{{count}} hodín'
  107. }
  108. },
  109. xDays: {
  110. one: {
  111. present: 'deň',
  112. past: 'dňom',
  113. future: 'deň'
  114. },
  115. twoFour: {
  116. present: '{{count}} dni',
  117. past: '{{count}} dňami',
  118. future: '{{count}} dni'
  119. },
  120. other: {
  121. present: '{{count}} dní',
  122. past: '{{count}} dňami',
  123. future: '{{count}} dní'
  124. }
  125. },
  126. xWeeks: {
  127. one: {
  128. present: 'týždeň',
  129. past: 'týždňom',
  130. future: 'týždeň'
  131. },
  132. twoFour: {
  133. present: '{{count}} týždne',
  134. past: '{{count}} týždňami',
  135. future: '{{count}} týždne'
  136. },
  137. other: {
  138. present: '{{count}} týždňov',
  139. past: '{{count}} týždňami',
  140. future: '{{count}} týždňov'
  141. }
  142. },
  143. xMonths: {
  144. one: {
  145. present: 'mesiac',
  146. past: 'mesiacom',
  147. future: 'mesiac'
  148. },
  149. twoFour: {
  150. present: '{{count}} mesiace',
  151. past: '{{count}} mesiacmi',
  152. future: '{{count}} mesiace'
  153. },
  154. other: {
  155. present: '{{count}} mesiacov',
  156. past: '{{count}} mesiacmi',
  157. future: '{{count}} mesiacov'
  158. }
  159. },
  160. xYears: {
  161. one: {
  162. present: 'rok',
  163. past: 'rokom',
  164. future: 'rok'
  165. },
  166. twoFour: {
  167. present: '{{count}} roky',
  168. past: '{{count}} rokmi',
  169. future: '{{count}} roky'
  170. },
  171. other: {
  172. present: '{{count}} rokov',
  173. past: '{{count}} rokmi',
  174. future: '{{count}} rokov'
  175. }
  176. }
  177. };
  178. var formatDistance = function formatDistance(token, count, options) {
  179. var preposition = extractPreposition(token) || '';
  180. var key = lowercaseFirstLetter(token.substring(preposition.length));
  181. var scheme = formatDistanceLocale[key];
  182. if (!(options !== null && options !== void 0 && options.addSuffix)) {
  183. return prefixPreposition(preposition) + suffixPreposition(preposition) + declension(scheme, count, 'present');
  184. }
  185. if (options.comparison && options.comparison > 0) {
  186. return prefixPreposition(preposition) + 'o ' + suffixPreposition(preposition) + declension(scheme, count, 'future');
  187. } else {
  188. return prefixPreposition(preposition) + 'pred ' + suffixPreposition(preposition) + declension(scheme, count, 'past');
  189. }
  190. };
  191. var _default = formatDistance;
  192. exports.default = _default;
  193. module.exports = exports.default;