git.iko.soy/typeable/pandoc
on master help sign in
Roff tokenizer: refactor escString.
b1e7101John MacFarlane
src/Text/Pandoc/Readers/Roff.hs+6−15
@@ -212,7 +212,7 @@ escapeNormal = do
212 'C' -> quoteArg >>= resolveGlyph '\''
212 'C' -> quoteArg >>= resolveGlyph '\''
213 'f' -> escFont
213 'f' -> escFont
214 's' -> escFontSize
214 's' -> escFontSize
215− '*' -> escStar
215+ '*' -> escString
216 '"' -> mempty <$ skipMany (satisfy (/='\n')) -- line comment
216 '"' -> mempty <$ skipMany (satisfy (/='\n')) -- line comment
217 '#' -> mempty <$ manyTill anyChar newline
217 '#' -> mempty <$ manyTill anyChar newline
218 '%' -> return mempty
218 '%' -> return mempty
@@ -568,23 +568,14 @@ lexArgs = do
568 char '"'
568 char '"'
569 return [RoffStr "\""]
569 return [RoffStr "\""]
570
570
571−escStar :: PandocMonad m => RoffLexer m [LinePart]
571+escString :: PandocMonad m => RoffLexer m [LinePart]
572−escStar = try $ do
572+escString = try $ do
573 pos <- getPosition
573 pos <- getPosition
574− c <- anyChar
574+ (do cs <- escapeArg
575− case c of
576− '(' -> do
577− cs <- count 2 anyChar
578− resolveString cs pos
575+ resolveString cs pos)
579− '[' -> do
580− cs <- many (noneOf "\t\n\r ]")
581− char ']'
576+ <|> mempty <$ char 'S'
582− resolveString cs pos
583− 'S' -> return mempty -- switch back to default font size
584− _ -> resolveString [c] pos
585
577
586 where
578 where
587−
588 -- strings and macros share namespace
579 -- strings and macros share namespace
589 resolveString stringname pos = do
580 resolveString stringname pos = do
590 RoffTokens ts <- resolveMacro stringname [] pos
581 RoffTokens ts <- resolveMacro stringname [] pos