@@ -86,8 +86,8 @@ data RoffState = RoffState { fontKind :: FontKind
8686instance Default RoffState where
8787 def = RoffState {fontKind = Regular}
8888
89−type ManParser m = ParserT [Char] RoffState m
90−type ManCompiler m = ParserT [ManToken] ParserState m
89+type ManLexer m = ParserT [Char] RoffState m
90+type ManParser m = ParserT [ManToken] ParserState m
9191
9292----
9393-- testStrr :: [Char] -> Either PandocError Pandoc
@@ -115,11 +115,11 @@ testFile fname = do
115115-- | Read man (troff) from an input string and return a Pandoc document.
116116readMan :: PandocMonad m => ReaderOptions -> T.Text -> m Pandoc
117117readMan opts txt = do
118− eithertokens <- readWithM parseMan def (T.unpack $ crFilter txt)
118+ eithertokens <- readWithM lexMan def (T.unpack $ crFilter txt)
119119 case eithertokens of
120120 Right tokenz -> do
121121 let state = def {stateOptions = opts} :: ParserState
122− eitherdoc <- readWithMTokens compileMan state tokenz
122+ eitherdoc <- readWithMTokens parseMan state tokenz
123123 case eitherdoc of
124124 Right doc -> return doc
125125 Left e -> throwError e
@@ -143,14 +143,14 @@ readMan opts txt = do
143143-- String -> ManToken function
144144--
145145
146−parseMan :: PandocMonad m => ManParser m [ManToken]
147−parseMan = many (parseMacro <|> parseLine <|> parseEmptyLine)
146+lexMan :: PandocMonad m => ManLexer m [ManToken]
147+lexMan = many (lexMacro <|> lexLine <|> lexEmptyLine)
148148
149−compileMan :: PandocMonad m => ManCompiler m Pandoc
150−compileMan = do
151− let compilers = [compileTitle, compilePara, compileSkippedContent
152− , compileCodeBlock, compileHeader, compileSkipMacro]
153− blocks <- many $ choice compilers
149+parseMan :: PandocMonad m => ManParser m Pandoc
150+parseMan = do
151+ let parsers = [parseTitle, parsePara, parseSkippedContent
152+ , parseCodeBlock, parseHeader, parseSkipMacro]
153+ blocks <- many $ choice parsers
154154 parserst <- getState
155155 return $ Pandoc (stateMeta parserst) (filter (not . isNull) blocks)
156156
@@ -159,12 +159,12 @@ compileMan = do
159159 isNull Null = True
160160 isNull _ = False
161161
162−parseMacro :: PandocMonad m => ManParser m ManToken
163−parseMacro = do
162+lexMacro :: PandocMonad m => ManLexer m ManToken
163+lexMacro = do
164164 char '.' <|> char '\''
165165 many space
166166 macroName <- many1 (letter <|> oneOf ['\\', '"'])
167− args <- parseArgs
167+ args <- lexArgs
168168 let joinedArgs = concat $ intersperse " " args
169169
170170 let tok = case macroName of
@@ -200,44 +200,44 @@ parseMacro = do
200200 let manurl pagename section = "../"++section++"/"++pagename++"."++section
201201 return $ Link nullAttr [Str txt] (manurl mpage [mansect], mpage)
202202
203− parseArgs :: PandocMonad m => ManParser m [String]
204− parseArgs = do
203+ lexArgs :: PandocMonad m => ManLexer m [String]
204+ lexArgs = do
205205 eolOpt <- optionMaybe $ char '\n'
206206 if isJust eolOpt
207207 then return []
208208 else do
209209 many1 space
210210 arg <- try quotedArg <|> plainArg
211− otherargs <- parseArgs
211+ otherargs <- lexArgs
212212 return $ arg : otherargs
213213
214214 where
215215
216− plainArg :: PandocMonad m => ManParser m String
216+ plainArg :: PandocMonad m => ManLexer m String
217217 plainArg = many1 $ noneOf " \t\n"
218218
219− quotedArg :: PandocMonad m => ManParser m String
219+ quotedArg :: PandocMonad m => ManLexer m String
220220 quotedArg = do
221221 char '"'
222222 val <- many1 quotedChar
223223 char '"'
224224 return val
225225
226− quotedChar :: PandocMonad m => ManParser m Char
226+ quotedChar :: PandocMonad m => ManLexer m Char
227227 quotedChar = noneOf "\"\n" <|> try (string "\"\"" >> return '"')
228228
229−escapeParser :: PandocMonad m => ManParser m EscapeThing
230−escapeParser = do
229+escapeLexer :: PandocMonad m => ManLexer m EscapeThing
230+escapeLexer = do
231231 char '\\'
232232 choice [escChar, escFont]
233233 where
234234
235− escChar :: PandocMonad m => ManParser m EscapeThing
235+ escChar :: PandocMonad m => ManLexer m EscapeThing
236236 escChar = choice [ char '-' >> return (EChar '-')
237237 , oneOf ['%', '{', '}'] >> return ENothing
238238 ]
239239
240− escFont :: PandocMonad m => ManParser m EscapeThing
240+ escFont :: PandocMonad m => ManLexer m EscapeThing
241241 escFont = do
242242 char 'f'
243243 font <- choice [ char 'B' >> return Bold
@@ -250,36 +250,36 @@ escapeParser = do
250250 modifyState (\r -> r {fontKind = font})
251251 return $ EFont font
252252
253−parseLine :: PandocMonad m => ManParser m ManToken
254−parseLine = do
253+lexLine :: PandocMonad m => ManLexer m ManToken
254+lexLine = do
255255 lnparts <- many1 (esc <|> linePart)
256256 newline
257257 return $ MLine $ catMaybes lnparts
258258 where
259259
260− esc :: PandocMonad m => ManParser m (Maybe (String, FontKind))
260+ esc :: PandocMonad m => ManLexer m (Maybe (String, FontKind))
261261 esc = do
262− someesc <- escapeParser
262+ someesc <- escapeLexer
263263 font <- currentFont
264264 let rv = case someesc of
265265 EChar c -> Just ([c], font)
266266 _ -> Nothing
267267 return rv
268268
269− linePart :: PandocMonad m => ManParser m (Maybe (String, FontKind))
269+ linePart :: PandocMonad m => ManLexer m (Maybe (String, FontKind))
270270 linePart = do
271271 lnpart <- many1 $ noneOf "\n\\"
272272 font <- currentFont
273273 return $ Just (lnpart, font)
274274
275− currentFont :: PandocMonad m => ManParser m FontKind
275+ currentFont :: PandocMonad m => ManLexer m FontKind
276276 currentFont = do
277277 RoffState {fontKind = fk} <- getState
278278 return fk
279279
280280
281−parseEmptyLine :: PandocMonad m => ManParser m ManToken
282−parseEmptyLine = char '\n' >> return MEmptyLine
281+lexEmptyLine :: PandocMonad m => ManLexer m ManToken
282+lexEmptyLine = char '\n' >> return MEmptyLine
283283
284284--
285285-- ManToken parsec functions
@@ -291,48 +291,48 @@ msatisfy predic = tokenPrim show nextPos testTok
291291 testTok t = if predic t then Just t else Nothing
292292 nextPos pos x _xs = updatePosString pos (show x)
293293
294−mstr :: PandocMonad m => ManCompiler m ManToken
294+mstr :: PandocMonad m => ManParser m ManToken
295295mstr = msatisfy isMStr where
296296 isMStr (MStr _ _) = True
297297 isMStr _ = False
298298
299−mline :: PandocMonad m => ManCompiler m ManToken
299+mline :: PandocMonad m => ManParser m ManToken
300300mline = msatisfy isMLine where
301301 isMLine (MLine _) = True
302302 isMLine _ = False
303303
304−mlink :: PandocMonad m => ManCompiler m ManToken
304+mlink :: PandocMonad m => ManParser m ManToken
305305mlink = msatisfy isMLink where
306306 isMLink (MLink _ _) = True
307307 isMLink _ = False
308308
309−memplyLine :: PandocMonad m => ManCompiler m ManToken
309+memplyLine :: PandocMonad m => ManParser m ManToken
310310memplyLine = msatisfy isMEmptyLine where
311311 isMEmptyLine MEmptyLine = True
312312 isMEmptyLine _ = False
313313
314−mheader :: PandocMonad m => ManCompiler m ManToken
314+mheader :: PandocMonad m => ManParser m ManToken
315315mheader = msatisfy isMHeader where
316316 isMHeader (MHeader _ _) = True
317317 isMHeader _ = False
318318
319−mmacro :: PandocMonad m => MacroKind -> ManCompiler m ManToken
319+mmacro :: PandocMonad m => MacroKind -> ManParser m ManToken
320320mmacro mk = msatisfy isMMacro where
321321 isMMacro (MMacro mk' _) | mk == mk' = True
322322 | otherwise = False
323323 isMMacro _ = False
324324
325−mmacroAny :: PandocMonad m => ManCompiler m ManToken
325+mmacroAny :: PandocMonad m => ManParser m ManToken
326326mmacroAny = msatisfy isMMacro where
327327 isMMacro (MMacro _ _) = True
328328 isMMacro _ = False
329329
330−munknownMacro :: PandocMonad m => ManCompiler m ManToken
330+munknownMacro :: PandocMonad m => ManParser m ManToken
331331munknownMacro = msatisfy isMUnknownMacro where
332332 isMUnknownMacro (MUnknownMacro _ _) = True
333333 isMUnknownMacro _ = False
334334
335−mcomment :: PandocMonad m => ManCompiler m ManToken
335+mcomment :: PandocMonad m => ManParser m ManToken
336336mcomment = msatisfy isMComment where
337337 isMComment (MComment _) = True
338338 isMComment _ = False
@@ -341,8 +341,8 @@ mcomment = msatisfy isMComment where
341341-- ManToken -> Block functions
342342--
343343
344−compileTitle :: PandocMonad m => ManCompiler m Block
345−compileTitle = do
344+parseTitle :: PandocMonad m => ManParser m Block
345+parseTitle = do
346346 (MMacro _ args) <- mmacro KTitle
347347 if null args
348348 then return Null
@@ -357,15 +357,15 @@ compileTitle = do
357357 in
358358 pst {stateMeta = metaUp}
359359
360−compileSkippedContent :: PandocMonad m => ManCompiler m Block
361−compileSkippedContent = do
360+parseSkippedContent :: PandocMonad m => ManParser m Block
361+parseSkippedContent = do
362362 tok <- munknownMacro <|> mcomment <|> memplyLine
363363 onToken tok
364364 return Null
365365
366366 where
367367
368− onToken :: PandocMonad m => ManToken -> ManCompiler m ()
368+ onToken :: PandocMonad m => ManToken -> ManParser m ()
369369 onToken (MUnknownMacro mname _) = do
370370 pos <- getPosition
371371 logMessage $ SkippedContent ("Unknown macro: " ++ mname) pos
@@ -377,30 +377,30 @@ strToInline s Italic = Emph [Str s]
377377strToInline s Bold = Strong [Str s]
378378strToInline s ItalicBold = Strong [Emph [Str s]]
379379
380−compilePara :: PandocMonad m => ManCompiler m Block
381−compilePara = do
380+parsePara :: PandocMonad m => ManParser m Block
381+parsePara = do
382382 inls <- many1 (strInl <|> lineInl <|> comment)
383383 let withspaces = intersperse [Str " "] inls
384384 return $ Para (concat withspaces)
385385
386386 where
387387
388− strInl :: PandocMonad m => ManCompiler m [Inline]
388+ strInl :: PandocMonad m => ManParser m [Inline]
389389 strInl = do
390390 (MStr str fk) <- mstr
391391 return [strToInline str fk]
392392
393− lineInl :: PandocMonad m => ManCompiler m [Inline]
393+ lineInl :: PandocMonad m => ManParser m [Inline]
394394 lineInl = do
395395 (MLine fragments) <- mline
396396 return $ fmap (\(s,f) -> strToInline s f) fragments
397397
398− comment :: PandocMonad m => ManCompiler m [Inline]
398+ comment :: PandocMonad m => ManParser m [Inline]
399399 comment = mcomment >> return []
400400
401401
402−compileCodeBlock :: PandocMonad m => ManCompiler m Block
403−compileCodeBlock = do
402+parseCodeBlock :: PandocMonad m => ManParser m Block
403+parseCodeBlock = do
404404 mmacro KCodeBlStart
405405 toks <- many (mstr <|> mline <|> mlink <|> memplyLine <|> munknownMacro <|> mcomment)
406406 mmacro KCodeBlEnd
@@ -415,10 +415,10 @@ compileCodeBlock = do
415415 extractText MEmptyLine = Just "" -- string are intercalated with '\n', this prevents double '\n'
416416 extractText _ = Nothing
417417
418−compileHeader :: PandocMonad m => ManCompiler m Block
419−compileHeader = do
418+parseHeader :: PandocMonad m => ManParser m Block
419+parseHeader = do
420420 (MHeader lvl s) <- mheader
421421 return $ Header lvl nullAttr [Str s]
422422
423−compileSkipMacro :: PandocMonad m => ManCompiler m Block
424−compileSkipMacro = mmacroAny >> return Null
423+parseSkipMacro :: PandocMonad m => ManParser m Block
424+parseSkipMacro = mmacroAny >> return Null