All files / src/systemTools prompt.js

93.22% Statements 55/59
59.38% Branches 19/32
100% Functions 4/4
95.83% Lines 46/48

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 634x   4x   35x 35x 35x 35x 35x 35x 35x   35x 35x 35x 30x 450x 450x 450x 450x     5x 5x 2x 2x 2x 2x 2x 2x 2x     35x 35x 35x 35x 35x 35x 4x   4x 2760x 2760x 2760x 2760x 2760x           2760x 2760x 1980x 780x 780x   2760x     450x  
import chalk from 'chalk';
 
const highlight = chalk.grey.bold;
 
export const generateOptions = (inputData, isMultiChoice = false, mapping, renderMethod) => {
    let asString = '';
    const valuesAsObject = {};
    const valuesAsArray = [];
    const keysAsObject = {};
    const keysAsArray = [];
    const isArray = Array.isArray(inputData);
 
    const output = {};
    const renderer = renderMethod || _generateOptionString;
    if (isArray) {
        inputData.map((v, i) => {
            asString += renderer(i, v, mapping, v);
            valuesAsArray.push(v);
      E      if (!mapping) keysAsArray.push(v);
      E      if (!mapping) valuesAsObject[v] = v;
        });
    } else {
        let i = 0;
        for (const k in inputData) {
            const v = inputData[k];
            asString += renderer(i, v, mapping, k);
            keysAsArray.push(k);
            keysAsObject[k] = true;
            valuesAsObject[k] = v;
            valuesAsArray.push(v);
            i++;
        }
    }
    output.keysAsArray = keysAsArray.sort(_sort);
    output.valuesAsArray = valuesAsArray.sort(_sort);
    output.keysAsObject = keysAsObject;
    output.valuesAsObject = valuesAsObject;
    output.asString = asString;
    return output;
};
 
const _sort = (a, b) => {
    let aStr = '';
    let bStr = '';
  E  if (typeof a === 'string') {
        aStr = a.toLowerCase();
        bStr = b.toLowerCase();
    } else {
        if (a && a.name) aStr = a.name.toLowerCase();
        if (b && b.name) bStr = b.name.toLowerCase();
    }
 
    let com = 0;
    if (aStr > bStr) {
        com = 1;
    } elsEe if (aStr < bStr) {
        com = -1;
    }
    return com;
};
 
const _generateOptionString = (i, obj, mapping, defaultVal) => ` [${highlight(i + 1)}]> ${highlight(mapping ? '' : defaultVal)} \n`;