git.iko.soy/typeable/pandoc
on master help sign in
Man reader: moved all lexer functions to the front.
0ac43abJohn MacFarlane
src/Text/Pandoc/Readers/Man.hs+29−29
@@ -137,36 +137,9 @@ readMan opts txt = do
137 mapLeft _ (Right r) = Right r
137 mapLeft _ (Right r) = Right r
138
138
139--
139--
140−-- String -> ManToken function
140+-- Lexer: String -> ManToken
141--
141--
142
142
143−manToken :: PandocMonad m => ManLexer m ManTokens
144−manToken = lexComment <|> lexMacro <|> lexLine <|> lexEmptyLine
145−
146−parseMan :: PandocMonad m => ManParser m Pandoc
147−parseMan = do
148− bs <- many parseBlock <* eof
149− meta <- metadata <$> getState
150− let (Pandoc _ blocks) = doc $ mconcat bs
151− return $ Pandoc meta blocks
152−
153−parseBlock :: PandocMonad m => ManParser m Blocks
154−parseBlock = choice [ parseList
155− , parseDefinitionList
156− , parseBlockQuote
157− , parseTitle
158− , parseNewParagraph
159− , parsePara
160− , parseCodeBlock
161− , parseHeader
162− , skipUnkownMacro
163− ]
164−
165−parseNewParagraph :: PandocMonad m => ManParser m Blocks
166−parseNewParagraph = do
167− mmacro "P" <|> mmacro "PP" <|> mmacro "LP" <|> memptyLine
168− return mempty
169−
170eofline :: Stream s m Char => ParsecT s u m ()
143eofline :: Stream s m Char => ParsecT s u m ()
171eofline = void newline <|> eof
144eofline = void newline <|> eof
172
145
@@ -429,8 +402,35 @@ spaceTabChar = do
429lexEmptyLine :: PandocMonad m => ManLexer m ManTokens
402lexEmptyLine :: PandocMonad m => ManLexer m ManTokens
430lexEmptyLine = char '\n' >> return (singleTok MEmptyLine)
403lexEmptyLine = char '\n' >> return (singleTok MEmptyLine)
431
404
405+manToken :: PandocMonad m => ManLexer m ManTokens
406+manToken = lexComment <|> lexMacro <|> lexLine <|> lexEmptyLine
407+
408+parseMan :: PandocMonad m => ManParser m Pandoc
409+parseMan = do
410+ bs <- many parseBlock <* eof
411+ meta <- metadata <$> getState
412+ let (Pandoc _ blocks) = doc $ mconcat bs
413+ return $ Pandoc meta blocks
414+
415+parseBlock :: PandocMonad m => ManParser m Blocks
416+parseBlock = choice [ parseList
417+ , parseDefinitionList
418+ , parseBlockQuote
419+ , parseTitle
420+ , parseNewParagraph
421+ , parsePara
422+ , parseCodeBlock
423+ , parseHeader
424+ , skipUnkownMacro
425+ ]
426+
427+parseNewParagraph :: PandocMonad m => ManParser m Blocks
428+parseNewParagraph = do
429+ mmacro "P" <|> mmacro "PP" <|> mmacro "LP" <|> memptyLine
430+ return mempty
431+
432--
432--
433−-- ManToken parsec functions
433+-- Parser: [ManToken] -> Pandoc
434--
434--
435
435
436msatisfy :: (Show t, Stream s m t) => (t -> Bool) -> ParserT s st m t
436msatisfy :: (Show t, Stream s m t) => (t -> Bool) -> ParserT s st m t