mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-25 09:55:15 +00:00
132 lines
3.4 KiB
JavaScript
132 lines
3.4 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', {
|
||
|
value: true
|
||
|
});
|
||
|
exports.default = void 0;
|
||
|
|
||
|
function util() {
|
||
|
const data = _interopRequireWildcard(require('util'));
|
||
|
|
||
|
util = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _prettyFormat() {
|
||
|
const data = _interopRequireDefault(require('pretty-format'));
|
||
|
|
||
|
_prettyFormat = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _interopRequireDefault(obj) {
|
||
|
return obj && obj.__esModule ? obj : {default: obj};
|
||
|
}
|
||
|
|
||
|
function _getRequireWildcardCache() {
|
||
|
if (typeof WeakMap !== 'function') return null;
|
||
|
var cache = new WeakMap();
|
||
|
_getRequireWildcardCache = function () {
|
||
|
return cache;
|
||
|
};
|
||
|
return cache;
|
||
|
}
|
||
|
|
||
|
function _interopRequireWildcard(obj) {
|
||
|
if (obj && obj.__esModule) {
|
||
|
return obj;
|
||
|
}
|
||
|
if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
|
||
|
return {default: obj};
|
||
|
}
|
||
|
var cache = _getRequireWildcardCache();
|
||
|
if (cache && cache.has(obj)) {
|
||
|
return cache.get(obj);
|
||
|
}
|
||
|
var newObj = {};
|
||
|
var hasPropertyDescriptor =
|
||
|
Object.defineProperty && Object.getOwnPropertyDescriptor;
|
||
|
for (var key in obj) {
|
||
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
||
|
var desc = hasPropertyDescriptor
|
||
|
? Object.getOwnPropertyDescriptor(obj, key)
|
||
|
: null;
|
||
|
if (desc && (desc.get || desc.set)) {
|
||
|
Object.defineProperty(newObj, key, desc);
|
||
|
} else {
|
||
|
newObj[key] = obj[key];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
newObj.default = obj;
|
||
|
if (cache) {
|
||
|
cache.set(obj, newObj);
|
||
|
}
|
||
|
return newObj;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*
|
||
|
*/
|
||
|
const SUPPORTED_PLACEHOLDERS = /%[sdifjoOp%]/g;
|
||
|
const PRETTY_PLACEHOLDER = '%p';
|
||
|
const INDEX_PLACEHOLDER = '%#';
|
||
|
const PLACEHOLDER_PREFIX = '%';
|
||
|
const JEST_EACH_PLACEHOLDER_ESCAPE = '@@__JEST_EACH_PLACEHOLDER_ESCAPE__@@';
|
||
|
|
||
|
var _default = (title, arrayTable) =>
|
||
|
normaliseTable(arrayTable).map((row, index) => ({
|
||
|
arguments: row,
|
||
|
title: formatTitle(title, row, index)
|
||
|
}));
|
||
|
|
||
|
exports.default = _default;
|
||
|
|
||
|
const normaliseTable = table => (isTable(table) ? table : table.map(colToRow));
|
||
|
|
||
|
const isTable = table => table.every(Array.isArray);
|
||
|
|
||
|
const colToRow = col => [col];
|
||
|
|
||
|
const formatTitle = (title, row, rowIndex) =>
|
||
|
row
|
||
|
.reduce((formattedTitle, value) => {
|
||
|
const [placeholder] = getMatchingPlaceholders(formattedTitle);
|
||
|
const normalisedValue = normalisePlaceholderValue(value);
|
||
|
if (!placeholder) return formattedTitle;
|
||
|
if (placeholder === PRETTY_PLACEHOLDER)
|
||
|
return interpolatePrettyPlaceholder(formattedTitle, normalisedValue);
|
||
|
return util().format(formattedTitle, normalisedValue);
|
||
|
}, interpolateTitleIndex(title, rowIndex))
|
||
|
.replace(new RegExp(JEST_EACH_PLACEHOLDER_ESCAPE, 'g'), PLACEHOLDER_PREFIX);
|
||
|
|
||
|
const normalisePlaceholderValue = value =>
|
||
|
typeof value === 'string' && SUPPORTED_PLACEHOLDERS.test(value)
|
||
|
? value.replace(PLACEHOLDER_PREFIX, JEST_EACH_PLACEHOLDER_ESCAPE)
|
||
|
: value;
|
||
|
|
||
|
const getMatchingPlaceholders = title =>
|
||
|
title.match(SUPPORTED_PLACEHOLDERS) || [];
|
||
|
|
||
|
const interpolateTitleIndex = (title, index) =>
|
||
|
title.replace(INDEX_PLACEHOLDER, index.toString());
|
||
|
|
||
|
const interpolatePrettyPlaceholder = (title, value) =>
|
||
|
title.replace(
|
||
|
PRETTY_PLACEHOLDER,
|
||
|
(0, _prettyFormat().default)(value, {
|
||
|
maxDepth: 1,
|
||
|
min: true
|
||
|
})
|
||
|
);
|