git.iko.soy/typeable/pandoc
on master help sign in
Removed unneeded try's in RST reader; also minor code cleanup.
451b426fiddlosopher
src/Text/Pandoc/Readers/RST.hs+17−23
@@ -179,7 +179,7 @@ lineBlock = try $ do
179
179
180para = paraBeforeCodeBlock <|> paraNormal <?> "paragraph"
180para = paraBeforeCodeBlock <|> paraNormal <?> "paragraph"
181
181
182−codeBlockStart = try $ string "::" >> blankline >> blankline
182+codeBlockStart = string "::" >> blankline >> blankline
183
183
184-- paragraph that ends in a :: starting a code block
184-- paragraph that ends in a :: starting a code block
185paraBeforeCodeBlock = try $ do
185paraBeforeCodeBlock = try $ do
@@ -260,16 +260,14 @@ singleHeader = try $ do
260-- hrule block
260-- hrule block
261--
261--
262
262
263−hruleWith chr = try $ do
263+hrule = try $ do
264+ chr <- oneOf underlineChars
264− count 4 (char chr)
265+ count 3 (char chr)
265 skipMany (char chr)
266 skipMany (char chr)
266− skipSpaces
267+ blankline
267− newline
268 blanklines
268 blanklines
269 return HorizontalRule
269 return HorizontalRule
270
270
271−hrule = choice (map hruleWith underlineChars) <?> "hrule"
272−
273--
271--
274-- code blocks
272-- code blocks
275--
273--
@@ -325,7 +323,7 @@ rawLaTeXBlock = try $ do
325-- block quotes
323-- block quotes
326--
324--
327
325
328−blockQuote = try $ do
326+blockQuote = do
329 raw <- indentedBlock True
327 raw <- indentedBlock True
330 -- parse the extracted block, which may contain various block elements:
328 -- parse the extracted block, which may contain various block elements:
331 contents <- parseFromString parseBlocks $ raw ++ "\n\n"
329 contents <- parseFromString parseBlocks $ raw ++ "\n\n"
@@ -344,9 +342,7 @@ definitionListItem = try $ do
344 contents <- parseFromString parseBlocks $ raw ++ "\n\n"
342 contents <- parseFromString parseBlocks $ raw ++ "\n\n"
345 return (normalizeSpaces term, contents)
343 return (normalizeSpaces term, contents)
346
344
347−definitionList = try $ do
348− items <- many1 definitionListItem
345+definitionList = many1 definitionListItem >>= return . DefinitionList
349− return $ DefinitionList items
350
346
351-- parses bullet list start and returns its length (inc. following whitespace)
347-- parses bullet list start and returns its length (inc. following whitespace)
352bulletListStart = try $ do
348bulletListStart = try $ do
@@ -378,7 +374,7 @@ indentWith num = do
378 (try (char '\t' >> count (num - tabStop) (char ' '))) ]
374 (try (char '\t' >> count (num - tabStop) (char ' '))) ]
379
375
380-- parse raw text for one list item, excluding start marker and continuations
376-- parse raw text for one list item, excluding start marker and continuations
381−rawListItem start = try $ do
377+rawListItem start = do
382 markerLength <- start
378 markerLength <- start
383 firstLine <- manyTill anyChar newline
379 firstLine <- manyTill anyChar newline
384 restLines <- many (listLine markerLength)
380 restLines <- many (listLine markerLength)
@@ -408,16 +404,14 @@ listItem start = try $ do
408 updateState (\st -> st {stateParserContext = oldContext})
404 updateState (\st -> st {stateParserContext = oldContext})
409 return parsed
405 return parsed
410
406
411−orderedList = try $ do
407+orderedList = do
412 (start, style, delim) <- lookAhead (anyOrderedListMarker >>~ spaceChar)
408 (start, style, delim) <- lookAhead (anyOrderedListMarker >>~ spaceChar)
413 items <- many1 (listItem (orderedListStart style delim))
409 items <- many1 (listItem (orderedListStart style delim))
414 let items' = compactify items
410 let items' = compactify items
415 return $ OrderedList (start, style, delim) items'
411 return $ OrderedList (start, style, delim) items'
416
412
417−bulletList = try $ do
418− items <- many1 (listItem bulletListStart)
413+bulletList = many1 (listItem bulletListStart) >>=
419− let items' = compactify items
420− return $ BulletList items'
414+ return . BulletList . compactify
421
415
422--
416--
423-- unknown directive (e.g. comment)
417-- unknown directive (e.g. comment)
@@ -439,7 +433,7 @@ referenceKey =
439 choice [imageKey, anonymousKey, regularKeyQuoted, regularKey] >>~
433 choice [imageKey, anonymousKey, regularKeyQuoted, regularKey] >>~
440 optional blanklines
434 optional blanklines
441
435
442−targetURI = try $ do
436+targetURI = do
443 skipSpaces
437 skipSpaces
444 optional newline
438 optional newline
445 contents <- many1 (try (many spaceChar >> newline >>
439 contents <- many1 (try (many spaceChar >> newline >>
@@ -492,7 +486,7 @@ inline = choice [ link
492 , escapedChar
486 , escapedChar
493 , symbol ] <?> "inline"
487 , symbol ] <?> "inline"
494
488
495−hyphens = try $ do
489+hyphens = do
496 result <- many1 (char '-')
490 result <- many1 (char '-')
497 option Space endline
491 option Space endline
498 -- don't want to treat endline after hyphen or dash as a space
492 -- don't want to treat endline after hyphen or dash as a space
@@ -538,7 +532,7 @@ endline = try $ do
538 notFollowedBy blankline
532 notFollowedBy blankline
539 -- parse potential list-starts at beginning of line differently in a list:
533 -- parse potential list-starts at beginning of line differently in a list:
540 st <- getState
534 st <- getState
541− if ((stateParserContext st) == ListItemState)
535+ if (stateParserContext st) == ListItemState
542 then notFollowedBy (anyOrderedListMarker >> spaceChar) >>
536 then notFollowedBy (anyOrderedListMarker >> spaceChar) >>
543 notFollowedBy' bulletListStart
537 notFollowedBy' bulletListStart
544 else return ()
538 else return ()
@@ -595,7 +589,7 @@ uri = try $ do
595 identifier <- many1 (noneOf " \t\n")
589 identifier <- many1 (noneOf " \t\n")
596 return $ scheme ++ identifier
590 return $ scheme ++ identifier
597
591
598−autoURI = try $ do
592+autoURI = do
599 src <- uri
593 src <- uri
600 return $ Link [Str src] (src, "")
594 return $ Link [Str src] (src, "")
601
595
@@ -611,12 +605,12 @@ emailAddress = try $ do
611
605
612domainChar = alphaNum <|> char '-'
606domainChar = alphaNum <|> char '-'
613
607
614−domain = try $ do
608+domain = do
615 first <- many1 domainChar
609 first <- many1 domainChar
616 dom <- many1 (try (do{ char '.'; many1 domainChar }))
610 dom <- many1 (try (do{ char '.'; many1 domainChar }))
617 return $ joinWithSep "." (first:dom)
611 return $ joinWithSep "." (first:dom)
618
612
619−autoEmail = try $ do
613+autoEmail = do
620 src <- emailAddress
614 src <- emailAddress
621 return $ Link [Str src] ("mailto:" ++ src, "")
615 return $ Link [Str src] ("mailto:" ++ src, "")
622
616