themer/cli/packages/utils/lib/index.js
2020-04-25 13:32:05 -06:00

62 lines
1.3 KiB
JavaScript

const getSizesFromOptOrDefault = (opt, patternSize) => {
let sizes;
if (opt) {
const unparsedSizes = Array.isArray(opt) ? opt : [opt];
sizes = unparsedSizes.map(unparsedSize => {
const results = /(\d+)x(\d+)/.exec(unparsedSize);
if (results) {
const w = parseInt(results[1], 10);
const h = parseInt(results[2], 10);
return {
w,
h,
};
} else {
throw new Error(`Malformed resolution argument: ${unparsedSize}`);
}
});
} else {
sizes = [
{
w: 2880,
h: 1800,
},
{
w: 750,
h: 1334,
},
];
}
if (patternSize) {
return sizes.map(size => ({
...size,
s: patternSize && size.w / Math.round(size.w / patternSize),
}));
} else {
return sizes;
}
};
const deepFlatten = arr =>
arr.reduce(
(cumulative, inner) =>
cumulative.concat(Array.isArray(inner) ? deepFlatten(inner) : inner),
[]
);
const colorSets = colors =>
Object.entries(colors).map(([name, colors]) => ({name, colors}));
const listOutputFiles = paths => `
Files generated:
${paths.map(p => `* \`${p}\``).join('\n')}
`;
module.exports = {
getSizesFromOptOrDefault,
deepFlatten,
colorSets,
listOutputFiles,
};