@@ -66,7 +66,6 @@ import Text.Parsec hiding (tokenPrim)
6666import qualified Text.Parsec as Parsec
6767import Text.Pandoc.RoffChar (characterCodes, combiningAccents)
6868import qualified Data.Sequence as Seq
69−import Data.Sequence (Seq)
7069import qualified Data.Foldable as Foldable
7170import qualified Data.Text.Normalize as Normalize
7271
@@ -111,7 +110,7 @@ data RoffToken = MLine [LinePart]
111110 | MTable [TableOption] [TableRow] SourcePos
112111 deriving Show
113112
114−newtype RoffTokens = RoffTokens { unRoffTokens :: Seq RoffToken }
113+newtype RoffTokens = RoffTokens { unRoffTokens :: Seq.Seq RoffToken }
115114 deriving (Show, Semigroup, Monoid)
116115
117116singleTok :: RoffToken -> RoffTokens
@@ -157,7 +156,7 @@ combiningAccentsMap :: M.Map String Char
157156combiningAccentsMap =
158157 M.fromList $ map (\(x,y) -> (y,x)) combiningAccents
159158
160−escape :: PandocMonad m => RoffLexer m (Seq LinePart)
159+escape :: PandocMonad m => RoffLexer m [LinePart]
161160escape = do
162161 char '\\'
163162 c <- anyChar
@@ -177,18 +176,18 @@ escape = do
177176 ':' -> return mempty
178177 '0' -> return mempty
179178 'c' -> return mempty
180− '-' -> return $ Seq.singleton $ RoffStr "-"
181− '_' -> return $ Seq.singleton $ RoffStr "_"
182− ' ' -> return $ Seq.singleton $ RoffStr " "
183− '\\' -> return $ Seq.singleton $ RoffStr "\\"
184− 't' -> return $ Seq.singleton $ RoffStr "\t"
185− 'e' -> return $ Seq.singleton $ RoffStr "\\"
186− '`' -> return $ Seq.singleton $ RoffStr "`"
187− '^' -> return $ Seq.singleton $ RoffStr " "
188− '|' -> return $ Seq.singleton $ RoffStr " "
189− '\'' -> return $ Seq.singleton $ RoffStr "`"
190− '.' -> return $ Seq.singleton $ RoffStr "`"
191− '~' -> return $ Seq.singleton $ RoffStr "\160" -- nonbreaking space
179+ '-' -> return [RoffStr "-"]
180+ '_' -> return [RoffStr "_"]
181+ ' ' -> return [RoffStr " "]
182+ '\\' -> return [RoffStr "\\"]
183+ 't' -> return [RoffStr "\t"]
184+ 'e' -> return [RoffStr "\\"]
185+ '`' -> return [RoffStr "`"]
186+ '^' -> return [RoffStr " "]
187+ '|' -> return [RoffStr " "]
188+ '\'' -> return [RoffStr "`"]
189+ '.' -> return [RoffStr "`"]
190+ '~' -> return [RoffStr "\160"] -- nonbreaking space
192191 _ -> escUnknown ['\\',c]
193192
194193 where
@@ -196,7 +195,7 @@ escape = do
196195 twoCharGlyph = do
197196 cs <- count 2 anyChar
198197 case M.lookup cs characterCodeMap of
199− Just c -> return $ Seq.singleton $ RoffStr [c]
198+ Just c -> return [RoffStr [c]]
200199 Nothing -> escUnknown ('\\':'(':cs)
201200
202201 bracketedGlyph = unicodeGlyph <|> charGlyph
@@ -207,7 +206,7 @@ escape = do
207206 [] -> mzero
208207 [s] -> case M.lookup s characterCodeMap of
209208 Nothing -> mzero
210− Just c -> return $ Seq.singleton $ RoffStr [c]
209+ Just c -> return [RoffStr [c]]
211210 (s:ss) -> do
212211 basechar <- case M.lookup cs characterCodeMap of
213212 Nothing ->
@@ -223,13 +222,12 @@ escape = do
223222 case M.lookup a combiningAccentsMap of
224223 Just x -> addAccents as (x:xs)
225224 Nothing -> mzero
226− addAccents ss [basechar] >>= \xs ->
227− return (Seq.singleton $ RoffStr xs))
225+ addAccents ss [basechar] >>= \xs -> return [RoffStr xs])
228226 <|> escUnknown ("\\[" ++ cs ++ "]")
229227
230228 unicodeGlyph = try $ do
231229 xs <- ucharCode `sepBy1` (char '_') <* char ']'
232− return $ Seq.singleton $ RoffStr xs
230+ return [RoffStr xs]
233231
234232 ucharCode = try $ do
235233 char 'u'
@@ -240,20 +238,20 @@ escape = do
240238 Nothing -> mzero
241239 Just c -> return c
242240
243− escUnknown :: PandocMonad m => String -> RoffLexer m (Seq LinePart)
241+ escUnknown :: PandocMonad m => String -> RoffLexer m [LinePart]
244242 escUnknown s = do
245243 pos <- getPosition
246244 report $ SkippedContent ("Unknown escape sequence " ++ s) pos
247− return $ Seq.singleton $ RoffStr "\xFFFD"
245+ return [RoffStr "\xFFFD"]
248246
249247-- \s-1 \s0
250−escFontSize :: PandocMonad m => RoffLexer m (Seq LinePart)
248+escFontSize :: PandocMonad m => RoffLexer m [LinePart]
251249escFontSize = do
252250 let sign = option "" $ ("-" <$ char '-' <|> "" <$ char '+')
253251 let toFontSize xs =
254252 case safeRead xs of
255253 Nothing -> mzero
256− Just n -> return $ Seq.singleton $ FontSize n
254+ Just n -> return [FontSize n]
257255 choice
258256 [ do char '('
259257 s <- sign
@@ -269,7 +267,7 @@ escFontSize = do
269267 toFontSize (s ++ ds)
270268 ]
271269
272−escFont :: PandocMonad m => RoffLexer m (Seq LinePart)
270+escFont :: PandocMonad m => RoffLexer m [LinePart]
273271escFont = do
274272 font <- choice
275273 [ digit >> return defaultFontSpec
@@ -279,7 +277,7 @@ escFont = do
279277 ]
280278 modifyState $ \st -> st{ prevFont = currentFont st
281279 , currentFont = font }
282− return $ Seq.singleton $ Font font
280+ return [Font font]
283281
284282lettersFont :: PandocMonad m => RoffLexer m FontSpec
285283lettersFont = try $ do
@@ -538,24 +536,24 @@ lexArgs = do
538536 args <- many $ try oneArg
539537 skipMany spacetab
540538 eofline
541− return $ map Foldable.toList args
539+ return args
542540
543541 where
544542
545− oneArg :: PandocMonad m => RoffLexer m (Seq LinePart)
543+ oneArg :: PandocMonad m => RoffLexer m [LinePart]
546544 oneArg = do
547545 skipMany $ try $ string "\\\n" -- continuation line
548546 try quotedArg <|> plainArg
549547 -- try, because there are some erroneous files, e.g. linux/bpf.2
550548
551− plainArg :: PandocMonad m => RoffLexer m (Seq LinePart)
549+ plainArg :: PandocMonad m => RoffLexer m [LinePart]
552550 plainArg = do
553551 skipMany spacetab
554552 mconcat <$> many1 (macroArg <|> escape <|> regularText <|> unescapedQuote)
555553 where
556− unescapedQuote = char '"' >> return (Seq.singleton $ RoffStr "\"")
554+ unescapedQuote = char '"' >> return [RoffStr "\""]
557555
558− quotedArg :: PandocMonad m => RoffLexer m (Seq LinePart)
556+ quotedArg :: PandocMonad m => RoffLexer m [LinePart]
559557 quotedArg = do
560558 skipMany spacetab
561559 char '"'
@@ -568,9 +566,9 @@ lexArgs = do
568566 escapedQuote = try $ do
569567 char '"'
570568 char '"'
571− return $ Seq.singleton $ RoffStr "\""
569+ return [RoffStr "\""]
572570
573−escStar :: PandocMonad m => RoffLexer m (Seq LinePart)
571+escStar :: PandocMonad m => RoffLexer m [LinePart]
574572escStar = try $ do
575573 pos <- getPosition
576574 c <- anyChar
@@ -591,14 +589,14 @@ escStar = try $ do
591589 resolveString stringname pos = do
592590 RoffTokens ts <- resolveMacro stringname [] pos
593591 case Foldable.toList ts of
594− [MLine xs] -> return $ Seq.fromList xs
592+ [MLine xs] -> return xs
595593 _ -> do
596594 report $ SkippedContent ("unknown string " ++ stringname) pos
597595 return mempty
598596
599597lexLine :: PandocMonad m => RoffLexer m RoffTokens
600598lexLine = do
601− lnparts <- Foldable.toList . mconcat <$> many1 linePart
599+ lnparts <- mconcat <$> many1 linePart
602600 eofline
603601 go lnparts
604602 where -- return empty line if we only have empty strings;
@@ -607,30 +605,30 @@ lexLine = do
607605 go (RoffStr "" : xs) = go xs
608606 go xs = return $ singleTok $ MLine xs
609607
610−linePart :: PandocMonad m => RoffLexer m (Seq LinePart)
608+linePart :: PandocMonad m => RoffLexer m [LinePart]
611609linePart = macroArg <|> escape <|>
612610 regularText <|> quoteChar <|> spaceTabChar
613611
614−macroArg :: PandocMonad m => RoffLexer m (Seq LinePart)
612+macroArg :: PandocMonad m => RoffLexer m [LinePart]
615613macroArg = try $ do
616614 string "\\\\$"
617615 x <- digit
618− return $ Seq.singleton $ MacroArg $ ord x - ord '0'
616+ return [MacroArg $ ord x - ord '0']
619617
620−regularText :: PandocMonad m => RoffLexer m (Seq LinePart)
618+regularText :: PandocMonad m => RoffLexer m [LinePart]
621619regularText = do
622620 s <- many1 $ noneOf "\n\r\t \\\""
623− return $ Seq.singleton $ RoffStr s
621+ return [RoffStr s]
624622
625−quoteChar :: PandocMonad m => RoffLexer m (Seq LinePart)
623+quoteChar :: PandocMonad m => RoffLexer m [LinePart]
626624quoteChar = do
627625 char '"'
628− return $ Seq.singleton $ RoffStr "\""
626+ return [RoffStr "\""]
629627
630−spaceTabChar :: PandocMonad m => RoffLexer m (Seq LinePart)
628+spaceTabChar :: PandocMonad m => RoffLexer m [LinePart]
631629spaceTabChar = do
632630 c <- spacetab
633− return $ Seq.singleton $ RoffStr [c]
631+ return [RoffStr [c]]
634632
635633lexEmptyLine :: PandocMonad m => RoffLexer m RoffTokens
636634lexEmptyLine = newline >> return (singleTok MEmptyLine)