Link tect can be empty; inline code cannot be empty and can have nested
backticks; created a unit parser for all characters except newline
This commit is contained in:
@@ -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,
|
||||
|
Reference in New Issue
Block a user