format-lines.js 422 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;