format-lines.js 424 Bytes
Newer Older
vicotor's avatar
vicotor committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
function formatLines (...lines) {
  return [...indentEach(0, lines)].join('\n') + '\n';
}

function *indentEach (indent, lines) {
  for (const line of lines) {
    if (Array.isArray(line)) {
      yield * indentEach(indent + 1, line);
    } else {
      const padding = '    '.repeat(indent);
      yield * line.split('\n').map(subline => subline === '' ? '' : padding + subline);
    }
  }
}

module.exports = formatLines;