WordWrap com Scala

Esta é uma questão simples: pegue a Stringe adicione quebras de linha após uma certa quantidade de “preenchimento”, geralmente isso é para tornar a exibição da string mais agradável para humanos, cortando cerca de 78 caracteres.

Langref tem algumas soluções, mas cortam palavras, então você acaba com algo como:

A rápida raposa marrom salta sobre o cão preguiçoso. A rápida raposa marrom pula sobre o
cachorro preguiçoso. A rápida raposa marrom salta sobre o cão preguiçoso. A rápida Raposa marrom”

Não seria melhor se você pudesse cortar em torno de delimitadores de palavras?

A rápida raposa marrom salta sobre o cão preguiçoso. A rápida raposa marrom salta sobre o
cão preguiçoso. A rápida raposa marrom salta sobre o cão preguiçoso. A rápida Raposa marrom”

Uma solução simples é usar um regexp:

val wrapRegEx = """(.{1,78})s""".r
def wrapLine(s: String) = wrapRegEx.replaceAllIn(s, m=>m.group(1)+"n")