From 1d9ac86a2addc6ebd22fa13bf803966bbdb6cdcb Mon Sep 17 00:00:00 2001 From: Aadhavan Srinivasan Date: Tue, 27 May 2025 13:41:38 -0400 Subject: [PATCH] Implementation and test for horizontal rule --- src/MdToHTML.hs | 6 +++++- src/MdToHtmlTest.hs | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MdToHTML.hs b/src/MdToHTML.hs index 21b2e79..03accdd 100644 --- a/src/MdToHTML.hs +++ b/src/MdToHTML.hs @@ -407,9 +407,13 @@ parseOrderedList = do void (char '\n') <++ eof return $ OrdList (firstLine : lineItems) +parseHorizontalRule :: ReadP MdToken +parseHorizontalRule = string "---" *> (void (string "\n\n") <++ eof) *> return HorizontalRule + documentParsers :: [ReadP MdToken] documentParsers = - [ parseHeader, + [ parseHorizontalRule, + parseHeader, parseBlockquote, parseUnorderedList, parseOrderedList, diff --git a/src/MdToHtmlTest.hs b/src/MdToHtmlTest.hs index 3a514b9..239eb86 100644 --- a/src/MdToHtmlTest.hs +++ b/src/MdToHtmlTest.hs @@ -110,6 +110,10 @@ figureTests = [ check_equal "Image by itself" "
\"Image
Image 1
" (convert "![Image 1](img.png)") ] +horizontalRuleTests = + TestList + [check_equal "Horizontal Rule" "

a


b

" (convert "a\n\n---\n\nb")] + integrationTests = TestList [ check_equal "Integration 1" "

Sample Markdown

This is some basic, sample markdown.

Second Heading

" (convert "# Sample Markdown\n\n This is some basic, sample markdown.\n\n ## __Second__ _Heading_"), @@ -147,6 +151,7 @@ tests = imageTests, figureTests, codeTests, + horizontalRuleTests, integrationTests ]