diff options
author | defanor <defanor@uberspace.net> | 2017-11-21 12:38:14 +0300 |
---|---|---|
committer | defanor <defanor@uberspace.net> | 2017-11-21 12:39:29 +0300 |
commit | b6b3b20e30bf7e05a317522b7c5284a4f7b92223 (patch) | |
tree | 81331542b69480fefe294ff8282f0487ac679d71 | |
parent | bda6ff90cf20db909999e699e1edda76cbd4e8b4 (diff) |
Try to split lines on spaces during aggressive splitting
-rw-r--r-- | Pancake/Rendering.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Pancake/Rendering.hs b/Pancake/Rendering.hs index 7e96e72..6bc8268 100644 --- a/Pancake/Rendering.hs +++ b/Pancake/Rendering.hs @@ -227,8 +227,12 @@ fitLines maxLen inlineBits = concatMap (map reverse . fitWords [] 0) inlineBits where splitStyled :: Styled -> [Styled] splitStyled (Plain s) - | length s > maxLen = let (t, d) = splitAt maxLen s in - Plain t : splitStyled (Plain d) + | length s > maxLen = + case reverse (takeWhile (<= maxLen) (findIndices isSpace s)) of + (n:_) -> let (t, _:d) = splitAt n s + in Plain t : splitStyled (Plain d) + [] -> let (t, d) = splitAt maxLen s + in Plain t : splitStyled (Plain d) | otherwise = [Plain s] splitStyled (Underline s) = map Underline $ splitStyled s splitStyled (Bold s) = map Bold $ splitStyled s |