diff options
Diffstat (limited to 'Pancake/Rendering.hs')
-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 |