git.iko.soy/typeable/pandoc
on master help sign in
Refactor RST and Markdown readers using parseFromString.

git-svn-id: https://pandoc.googlecode.com/svn/trunk@864 788f1e2b-df1e-0410-8736-df70ead52e1b

commit81eba062f2e447fb1c266bc3f08b3b1ce2aeabc4 authorfiddlosopher <fiddlosopher@788f1e2b-df1e-0410-8736-df70ead52e1b> dateSun 19 Aug 2007, 00:18 (19 years ago) parent4e149f8
2 files changed+7−28
src/Text/Pandoc/Readers/Markdown.hs+4−16 src/Text/Pandoc/Readers/RST.hs+3−12
src/Text/Pandoc/Readers/Markdown.hs+4−16
@@ -195,10 +195,7 @@ noteBlock = try $ do
195195 raw <- sepBy rawLines (try (blankline >> indentSpaces))
196196 optional blanklines
197197 -- parse the extracted text, which may contain various block elements:
198− rest <- getInput
199− setInput $ (joinWithSep "\n" raw) ++ "\n\n"
200− contents <- parseBlocks
201− setInput rest
198+ contents <- parseFromString parseBlocks $ (joinWithSep "\n" raw) ++ "\n\n"
202199 return $ NoteBlock ref contents
203200
204201--
@@ -307,10 +304,7 @@ emailBlockQuote = try $ do
307304blockQuote = do
308305 raw <- emailBlockQuote <|> emacsBoxQuote
309306 -- parse the extracted block, which may contain various block elements:
310− rest <- getInput
311− setInput $ (joinWithSep "\n" raw) ++ "\n\n"
312− contents <- parseBlocks
313− setInput rest
307+ contents <- parseFromString parseBlocks $ (joinWithSep "\n" raw) ++ "\n\n"
314308 return $ BlockQuote contents
315309
316310--
@@ -393,11 +387,8 @@ listItem start = try $ do
393387 let oldContext = stateParserContext state
394388 setState $ state {stateParserContext = ListItemState}
395389 -- parse the extracted block, which may contain various block elements:
396− rest <- getInput
397390 let raw = concat (first:continuations)
398− setInput raw
399− contents <- parseBlocks
400− setInput rest
391+ contents <- parseFromString parseBlocks raw
401392 updateState (\st -> st {stateParserContext = oldContext})
402393 return contents
403394
@@ -419,10 +410,7 @@ definitionListItem = try $ do
419410 state <- getState
420411 let oldContext = stateParserContext state
421412 -- parse the extracted block, which may contain various block elements:
422− rest <- getInput
423− setInput (concat raw)
424− contents <- parseBlocks
425− setInput rest
413+ contents <- parseFromString parseBlocks $ concat raw
426414 updateState (\st -> st {stateParserContext = oldContext})
427415 return ((normalizeSpaces term), contents)
428416
src/Text/Pandoc/Readers/RST.hs+3−12
@@ -328,10 +328,7 @@ rawLaTeXBlock = try $ do
328328blockQuote = try $ do
329329 raw <- indentedBlock True
330330 -- parse the extracted block, which may contain various block elements:
331− rest <- getInput
332− setInput $ raw ++ "\n\n"
333− contents <- parseBlocks
334− setInput rest
331+ contents <- parseFromString parseBlocks $ raw ++ "\n\n"
335332 return $ BlockQuote contents
336333
337334--
@@ -344,10 +341,7 @@ definitionListItem = try $ do
344341 term <- many1Till inline endline
345342 raw <- indentedBlock True
346343 -- parse the extracted block, which may contain various block elements:
347− rest <- getInput
348− setInput $ raw ++ "\n\n"
349− contents <- parseBlocks
350− setInput rest
344+ contents <- parseFromString parseBlocks $ raw ++ "\n\n"
351345 return (normalizeSpaces term, contents)
352346
353347definitionList = try $ do
@@ -408,12 +402,9 @@ listItem start = try $ do
408402 -- see definition of "endline"
409403 state <- getState
410404 let oldContext = stateParserContext state
411− remaining <- getInput
412405 setState $ state {stateParserContext = ListItemState}
413406 -- parse the extracted block, which may itself contain block elements
414− setInput $ concat (first:rest) ++ blanks
415− parsed <- parseBlocks
416− setInput remaining
407+ parsed <- parseFromString parseBlocks $ concat (first:rest) ++ blanks
417408 updateState (\st -> st {stateParserContext = oldContext})
418409 return parsed
419410