summaryrefslogtreecommitdiff
path: root/Pancake
diff options
context:
space:
mode:
authordefanor <defanor@uberspace.net>2017-11-21 12:38:14 +0300
committerdefanor <defanor@uberspace.net>2017-11-21 12:39:29 +0300
commitb6b3b20e30bf7e05a317522b7c5284a4f7b92223 (patch)
tree81331542b69480fefe294ff8282f0487ac679d71 /Pancake
parentbda6ff90cf20db909999e699e1edda76cbd4e8b4 (diff)
Try to split lines on spaces during aggressive splitting
Diffstat (limited to 'Pancake')
-rw-r--r--Pancake/Rendering.hs8
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