@@ -1,4 +1,4 @@
1−{-# LANGUAGE OverloadedStrings #-}
1+{-# LANGUAGE OverloadedStrings, PatternGuards #-}
4Copyright (C) 2014 Jesse Rosenthal <jrosenthal@jhu.edu>
4Copyright (C) 2014 Jesse Rosenthal <jrosenthal@jhu.edu>
@@ -87,13 +87,17 @@ combineReducibles r s =
87 remaining' = conts' \\ shared
87 remaining' = conts' \\ shared
89 case null shared of
89 case null shared of
90− True -> case (not . null) rs && isSpace (last rs) of
90+ True | (x : xs) <- reverse rs
91− True -> rebuild conts (init rs) ++ [last rs, s]
92+ rebuild conts (reverse xs) ++ [x, s]
92− False -> [r,s]
93+ | (x : xs) <- ss
95+ [r, x] ++ rebuild conts' (xs)
93− False -> rebuild
97+ False -> rebuild
95− reduceList $
99+ reduceList $
96− (rebuild remaining rs) ++ (rebuild remaining' ss)
100+ (rebuild remaining rs) ++ (rebuild remaining' ss)
98instance Reducible Inline where
102instance Reducible Inline where
99 s1@(Span (id1, classes1, kvs1) ils1) <++> s2@(Span (id2, classes2, kvs2) ils2) =
103 s1@(Span (id1, classes1, kvs1) ils1) <++> s2@(Span (id2, classes2, kvs2) ils2) =
@@ -177,5 +181,3 @@ rebuild :: [Container a] -> [a] -> [a]
177rebuild [] xs = xs
181rebuild [] xs = xs
178rebuild ((Container f) : cs) xs = rebuild cs $ [f xs]
182rebuild ((Container f) : cs) xs = rebuild cs $ [f xs]
179rebuild (NullContainer : cs) xs = rebuild cs $ xs
183rebuild (NullContainer : cs) xs = rebuild cs $ xs