in src/HackBuilder.hack [533:558]
private function splitString(
string $str,
int $maxlen,
bool $preserve_space = false,
): vec<string> {
$lines = vec[];
$src_lines = \explode("\n", $str);
foreach ($src_lines as $src_line) {
while (Str\length($src_line) > $maxlen) {
$last_space = \strrpos(\substr($src_line, 0, $maxlen), ' ');
if ($last_space === false) {
break;
}
if ($preserve_space) {
$lines[] = \substr($src_line, 0, $last_space + 1);
} else {
$lines[] = \substr($src_line, 0, $last_space);
}
$src_line = \substr($src_line, $last_space + 1);
}
$lines[] = $src_line;
}
return $lines;
}