From b6b3b20e30bf7e05a317522b7c5284a4f7b92223 Mon Sep 17 00:00:00 2001 From: defanor Date: Tue, 21 Nov 2017 12:38:14 +0300 Subject: Try to split lines on spaces during aggressive splitting --- Pancake/Rendering.hs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'Pancake/Rendering.hs') 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 -- cgit v1.2.3