JSFiddle - React, Tailwind, and code Playground

by emilcieslar

JavaScript

function funcOutput(w, input) {
  const lines = input.split('\n').map(function(line) {
    return line.split(' ');
  })

  const words_temp = [].concat.apply([], lines);
  let words = [];

  // trim white spaces, eliminating empty words
  words_temp.forEach(function(word) {
    word = word.trim();
    if (word.length > 0)
      words.push(word);
  })
  
  // generate output lines
  let line = '';
  let out_lines = [];
  words.forEach(function(word) {
    if (line.length + word.length + 1 > w) {
      out_lines.push(line);
      line = '';
    }
    if (line.length == 0)
      line = word;
    else
      line = line + ' ' + word;
  });
  if (line.length > 0)
    out_lines.push(line);

  // merge output_text
  let out_text = '';
  out_lines.forEach(function(line) {
    out_text += line + '\n';
  })
  return out_text;
}

const result = funcOutput(25, `Lorem Ipsum is simply d de text`);

console.log(result);