Link tect can be empty; inline code cannot be empty and can have nested

backticks; created a unit parser for all characters except newline
usingMegaparsec
Aadhavan Srinivasan 3 weeks ago
parent ade3768e29
commit b1b99189c9

@ -185,15 +185,16 @@ parseStrikethrough = do
-- Parse code
parseCode :: Parser MdToken
parseCode = do
char '`'
inside <- manyTill (satisfy (/= '\n')) (char '`')
opening <- some $ char '`'
inside <- someTill (satisfy (/= '\n')) (char '`')
closing <- count (length opening - 1) (char '`')
return (Code (Unit (concatMap escapeChar inside)))
-- Parse a link
parseLink :: Parser MdToken
parseLink = do
char '['
linkText <- someTill parseLineToken (char ']')
linkText <- manyTill parseLineToken (char ']')
char '('
linkURL <- manyTill anySingle (char ')')
return $ Link (Line linkText) (URL linkURL)
@ -259,6 +260,13 @@ parseUnit = do
text <- anySingle
return (Unit [text])
-- Parse any character except a newline
parseUnitExceptNewline :: Parser MdToken
parseUnitExceptNewline = do
-- text <- satisfy (`notElem` specialChars)
text <- satisfy (/= '\n')
return (Unit [text])
lineParsers :: [Parser MdToken]
lineParsers =
[ parseLinebreak,

Loading…
Cancel
Save