All files mod.ts

100% Statements 22/22
100% Branches 24/24
100% Functions 5/5
100% Lines 18/18

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 431x 1x 1x 1x     1x 1x 1x 1x                                           1x 12x 12x 12x 11x 11x 18x 18x 11x 11x    
export enum Quotes {
  'single' = "'",
  'double' = '"',
  'backtick' = '`',
}
 
export enum Declaration {
  'var' = 'var',
  'let' = 'let',
  'const' = 'const',
}
 
export interface Options {
  /** The name of the array */
  name?: string;
  /** @default false preserves whitespace at the beginning and end of the line */
  preserveWhitespace?: boolean;
  /** @default true parses string lines to detect for boolean and number values */
  parse?: boolean;
  /** @default false runs the code through prettier */
  prettier?: boolean;
  /** @default false runs the code through standard */
  standard?: boolean;
  /** @default 'const' The declaration type of the array */
  declaration?: Declaration;
  /** @default 'single' The type of quotes strings are wrapped */
  quotes?: Quotes;
  /** @default 'true' Adds a semicolon at the end of the array */
  semiColons?: boolean;
}
 
export function listToArray(lines: string, options?: Options) {
  const results: string[] = [];
  const declaration = options?.declaration || Declaration.const;
  if (!lines) return '';
  if (options?.name) results.push(`${declaration} ${options.name} = `);
  const quote = options?.quotes || "'";
  const wrap = (value: string) => `  ${quote}${value}${quote}`;
  const items = lines.split('\n').filter(i => i);
  results.push(`[\n${items.map(wrap).join(', \n')}\n];`);
  return results.join('');
}