From e48f046aa024fea9f806368796eaaaed1f09ceaf Mon Sep 17 00:00:00 2001 From: fiddlosopher Date: Sat, 18 Aug 2007 15:26:29 +0000 Subject: + Fixed bug in markdown ordered list parsing. The problem was that anyOrderedListStart did not check for a space following the ordered list marker. So, 'A.B. 2007' would be parsed as a list item, then fail because of the lack of space after 'A.' (required by orderedListStart). Resolves Issue #22. + Fixed a similar problem in RST reader. + Added regression test. git-svn-id: https://pandoc.googlecode.com/svn/trunk@861 788f1e2b-df1e-0410-8736-df70ead52e1b --- src/Text/Pandoc/Readers/Markdown.hs | 5 +++-- src/Text/Pandoc/Readers/RST.hs | 5 +++-- tests/testsuite.native | 2 ++ tests/testsuite.txt | 4 ++++ tests/writer.context | 4 ++++ tests/writer.docbook | 6 ++++++ tests/writer.html | 4 ++++ tests/writer.latex | 4 ++++ tests/writer.man | 4 ++++ tests/writer.markdown | 4 ++++ tests/writer.native | 2 ++ tests/writer.rst | 4 ++++ tests/writer.rtf | 2 ++ 13 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 6ee8df7b6..abf8061e0 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -334,8 +334,9 @@ anyOrderedListStart = try $ do if stateStrict state then do many1 digit char '.' + spaceChar return (1, DefaultStyle, DefaultDelim) - else anyOrderedListMarker + else anyOrderedListMarker >>~ spaceChar orderedListStart style delim = try $ do optional newline -- if preceded by a Plain block in a list context @@ -346,7 +347,7 @@ orderedListStart style delim = try $ do char '.' return 1 else orderedListMarker style delim - oneOf spaceChars + spaceChar skipSpaces -- parse a line of a list item (start = parser for beginning of list item) diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs index ce8fedf02..878c1355c 100644 --- a/src/Text/Pandoc/Readers/RST.hs +++ b/src/Text/Pandoc/Readers/RST.hs @@ -418,7 +418,7 @@ listItem start = try $ do return parsed orderedList = try $ do - (start, style, delim) <- lookAhead anyOrderedListMarker + (start, style, delim) <- lookAhead (anyOrderedListMarker >>~ spaceChar) items <- many1 (listItem (orderedListStart style delim)) let items' = compactify items return $ OrderedList (start, style, delim) items' @@ -551,7 +551,8 @@ endline = try $ do -- parse potential list-starts at beginning of line differently in a list: st <- getState if ((stateParserContext st) == ListItemState) - then notFollowedBy' anyOrderedListMarker >> notFollowedBy' bulletListStart + then notFollowedBy (anyOrderedListMarker >> spaceChar) >> + notFollowedBy' bulletListStart else return () return Space diff --git a/tests/testsuite.native b/tests/testsuite.native index 11719eb16..9950341c4 100644 --- a/tests/testsuite.native +++ b/tests/testsuite.native @@ -178,6 +178,8 @@ Pandoc (Meta [Str "Pandoc",Space,Str "Test",Space,Str "Suite"] ["John MacFarlane , OrderedList (1,DefaultStyle,DefaultDelim) [ [ Plain [Str "Nested",Str "."] ] ] ] ] +, Para [Str "Should",Space,Str "not",Space,Str "be",Space,Str "a",Space,Str "list",Space,Str "item:"] +, Para [Str "M",Str ".",Str "A",Str ".",Space,Str "2007"] , HorizontalRule , Header 1 [Str "Definition",Space,Str "Lists"] , Para [Str "Tight",Space,Str "using",Space,Str "spaces:"] diff --git a/tests/testsuite.txt b/tests/testsuite.txt index 31b5c3bed..f8d9221b9 100644 --- a/tests/testsuite.txt +++ b/tests/testsuite.txt @@ -281,6 +281,10 @@ Autonumbering: #. More. #. Nested. +Should not be a list item: + +M.A. 2007 + * * * * * # Definition Lists diff --git a/tests/writer.context b/tests/writer.context index fe7c58851..c0b633117 100644 --- a/tests/writer.context +++ b/tests/writer.context @@ -399,6 +399,10 @@ Autonumbering: \item Nested. \stopltxenum \stopltxenum +Should not be a list item: + +M.A. 2007 + \thinrule \section{Definition Lists} diff --git a/tests/writer.docbook b/tests/writer.docbook index 390c9f4fe..7b3f39f34 100644 --- a/tests/writer.docbook +++ b/tests/writer.docbook @@ -642,6 +642,12 @@ These should not be escaped: \$ \\ \> \[ \{ + + Should not be a list item: + + + M.A. 2007 +
diff --git a/tests/writer.html b/tests/writer.html index 6c3637315..46a95cde7 100644 --- a/tests/writer.html +++ b/tests/writer.html @@ -449,6 +449,10 @@ These should not be escaped: \$ \\ \> \[ \{ >

Should not be a list item:

M.A. 2007


Definition Lists

\\[ \\\{\par} {\pard \ql \f0 \sa0 \li360 \fi-360 1.\tx360\tab Autonumber.\par} {\pard \ql \f0 \sa0 \li360 \fi-360 2.\tx360\tab More.\par} {\pard \ql \f0 \sa0 \li720 \fi-360 a.\tx360\tab Nested.\sa180\sa180\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Should not be a list item:\par} +{\pard \ql \f0 \sa180 \li0 \fi0 M.A. 2007\par} {\pard \qc \f0 \sa180 \li0 \fi0 \emdash\emdash\emdash\emdash\emdash\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Definition Lists\par} {\pard \ql \f0 \sa180 \li0 \fi0 Tight using spaces:\par} -- cgit v1.2.3