array.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function _util() {
  7. const data = _interopRequireDefault(require('util'));
  8. _util = function _util() {
  9. return data;
  10. };
  11. return data;
  12. }
  13. function _prettyFormat() {
  14. const data = _interopRequireDefault(require('pretty-format'));
  15. _prettyFormat = function _prettyFormat() {
  16. return data;
  17. };
  18. return data;
  19. }
  20. function _interopRequireDefault(obj) {
  21. return obj && obj.__esModule ? obj : {default: obj};
  22. }
  23. function _slicedToArray(arr, i) {
  24. return (
  25. _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest()
  26. );
  27. }
  28. function _nonIterableRest() {
  29. throw new TypeError('Invalid attempt to destructure non-iterable instance');
  30. }
  31. function _iterableToArrayLimit(arr, i) {
  32. var _arr = [];
  33. var _n = true;
  34. var _d = false;
  35. var _e = undefined;
  36. try {
  37. for (
  38. var _i = arr[Symbol.iterator](), _s;
  39. !(_n = (_s = _i.next()).done);
  40. _n = true
  41. ) {
  42. _arr.push(_s.value);
  43. if (i && _arr.length === i) break;
  44. }
  45. } catch (err) {
  46. _d = true;
  47. _e = err;
  48. } finally {
  49. try {
  50. if (!_n && _i['return'] != null) _i['return']();
  51. } finally {
  52. if (_d) throw _e;
  53. }
  54. }
  55. return _arr;
  56. }
  57. function _arrayWithHoles(arr) {
  58. if (Array.isArray(arr)) return arr;
  59. }
  60. const SUPPORTED_PLACEHOLDERS = /%[sdifjoOp%]/g;
  61. const PRETTY_PLACEHOLDER = '%p';
  62. const INDEX_PLACEHOLDER = '%#';
  63. const PLACEHOLDER_PREFIX = '%';
  64. const JEST_EACH_PLACEHOLDER_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
  65. var _default = (title, arrayTable) =>
  66. normaliseTable(arrayTable).map((row, index) => ({
  67. arguments: row,
  68. title: formatTitle(title, row, index)
  69. }));
  70. exports.default = _default;
  71. const normaliseTable = table => (isTable(table) ? table : table.map(colToRow));
  72. const isTable = table => table.every(Array.isArray);
  73. const colToRow = col => [col];
  74. const formatTitle = (title, row, rowIndex) =>
  75. row
  76. .reduce((formattedTitle, value) => {
  77. const _getMatchingPlacehold = getMatchingPlaceholders(formattedTitle),
  78. _getMatchingPlacehold2 = _slicedToArray(_getMatchingPlacehold, 1),
  79. placeholder = _getMatchingPlacehold2[0];
  80. const normalisedValue = normalisePlaceholderValue(value);
  81. if (!placeholder) return formattedTitle;
  82. if (placeholder === PRETTY_PLACEHOLDER)
  83. return interpolatePrettyPlaceholder(formattedTitle, normalisedValue);
  84. return _util().default.format(formattedTitle, normalisedValue);
  85. }, interpolateTitleIndex(title, rowIndex))
  86. .replace(new RegExp(JEST_EACH_PLACEHOLDER_ESCAPE, 'g'), PLACEHOLDER_PREFIX);
  87. const normalisePlaceholderValue = value =>
  88. typeof value === 'string' && SUPPORTED_PLACEHOLDERS.test(value)
  89. ? value.replace(PLACEHOLDER_PREFIX, JEST_EACH_PLACEHOLDER_ESCAPE)
  90. : value;
  91. const getMatchingPlaceholders = title =>
  92. title.match(SUPPORTED_PLACEHOLDERS) || [];
  93. const interpolateTitleIndex = (title, index) =>
  94. title.replace(INDEX_PLACEHOLDER, index.toString());
  95. const interpolatePrettyPlaceholder = (title, value) =>
  96. title.replace(
  97. PRETTY_PLACEHOLDER,
  98. (0, _prettyFormat().default)(value, {
  99. maxDepth: 1,
  100. min: true
  101. })
  102. );