function wordWrap(text, width, indent = "") {
const lines = [];
let currentLine = "";
text.split("\n").forEach((line) => {
if (line.trim() === "") {
lines.push(line);
} else {
const leadingSpace = line.match(/^\s*/)[0];
const words = line.trim().split(" ");
currentLine = leadingSpace;
words.forEach((word) => {
if (currentLine.length + word.length <= width) {
currentLine += (currentLine.trim() ? " " : "") + word;
} else {
lines.push(indent + currentLine);
currentLine = leadingSpace + word;
}
});
if (currentLine.trim()) {
lines.push(indent + currentLine);
}
currentLine = "";
}
});
if (currentLine.trim()) {
lines.push(indent + currentLine);
}
return lines.join("\n");
}