Roff reader: Improved handling of custom strings as arguments.
Added test.
This commit is contained in:
parent
e95aeeafb8
commit
805b9f8a12
2 changed files with 33 additions and 6 deletions
|
@ -212,6 +212,7 @@ readUnicodeChar _ = Nothing
|
|||
escapeNormal :: PandocMonad m => RoffLexer m [LinePart]
|
||||
escapeNormal = do
|
||||
c <- anyChar
|
||||
optional expandString
|
||||
case c of
|
||||
' ' -> return [RoffStr " "]
|
||||
'"' -> mempty <$ skipMany (satisfy (/='\n')) -- line comment
|
||||
|
@ -313,13 +314,12 @@ signedNumber = try $ do
|
|||
-- Parses: [..] or (..
|
||||
escapeArg :: PandocMonad m => RoffLexer m String
|
||||
escapeArg = choice
|
||||
[ char '[' *> manyTill (expanding $ noneOf ['\n',']']) (char ']')
|
||||
, char '(' *> count 2 (expanding $ satisfy (/='\n'))
|
||||
[ char '[' *> optional expandString *>
|
||||
manyTill (noneOf ['\n',']']) (char ']')
|
||||
, char '(' *> optional expandString *>
|
||||
count 2 (satisfy (/='\n'))
|
||||
]
|
||||
|
||||
expanding :: PandocMonad m => RoffLexer m a -> RoffLexer m a
|
||||
expanding parser = try $ optional expandString >> parser
|
||||
|
||||
expandString :: PandocMonad m => RoffLexer m ()
|
||||
expandString = try $ do
|
||||
pos <- getPosition
|
||||
|
@ -336,7 +336,7 @@ quoteArg = char '\'' *> manyTill (noneOf ['\n','\'']) (char '\'')
|
|||
|
||||
escFont :: PandocMonad m => RoffLexer m [LinePart]
|
||||
escFont = do
|
||||
font <- expanding (escapeArg <|> count 1 alphaNum)
|
||||
font <- escapeArg <|> count 1 alphaNum
|
||||
font' <- if null font || font == "P"
|
||||
then prevFont <$> getState
|
||||
else return $ foldr processFontLetter defaultFontSpec font
|
||||
|
|
27
test/command/5039.md
Normal file
27
test/command/5039.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
```
|
||||
% pandoc -f man -t plain
|
||||
.ds foo bar
|
||||
.ds bar baz
|
||||
\*[\*[foo]]
|
||||
^D
|
||||
baz
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f man -t plain
|
||||
.ds foo [bar]
|
||||
.ds bar baz
|
||||
\*\*[foo]
|
||||
^D
|
||||
baz
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f man -t html
|
||||
.ds B-Font B
|
||||
.ds I-Font I
|
||||
.ds R-Font R
|
||||
\f\*[B-Font]certtool\fP
|
||||
^D
|
||||
<p><strong>certtool</strong></p>
|
||||
```
|
Loading…
Add table
Reference in a new issue